在Xcode 10和Swift 4中将核心数据添加到现有项目

只需几个步骤,即可将Core Data功能添加到现有项目中。

核心数据是Apple提供的框架,用于管理应用程序中的模型层。 在谈论MVC(模型,视图,控制器)体系结构时,核心数据本质上是模型部分。

如果您正在用Xcode开发一个iOS应用程序,并且您决定要使用Core Data,但在项目中未启用它,请不要担心! 可以添加一些简单的步骤,我们将在本文中介绍这些步骤。 该技术还可以使您轻松地将核心数据添加到其他应用程序项目类型,例如基于页面的应用程序或选项卡式应用程序。

我们将执行以下步骤,将Core Data放入我们现有的应用中:

  • 创建一个启用了核心数据的新Single View应用程序-完成后我们可以删除此项目
  • 将项目的AppDelegate.swift的相关部分复制到我们现有项目的AppDelegate.swift
  • 在我们现有的项目中创建一个新的核心数据数据模型并适当命名
  • 确保正确引用了数据模型
  • 测试!

因此,在打开现有项目的情况下,在Xcode中创建一个新项目( ⇧⌘N ),然后选择一个Single View App,您可以随意调用它,因为我们将在完成后将其删除。 您将在项目选项屏幕上看到“使用核心数据”复选框,确保已选中它。

现在,我们需要在这个新项目中打开AppDelegate.swift文件,并向下滚动到文件末尾,在这里我们需要将所有内容从applicationWillTerminate()复制到文件末尾:

  func applicationWillTerminate( _ application:UIApplication){ 
  //在应用程序即将终止时调用。  如果合适,保存数据。  另请参阅applicationDidEnterBackground:。 
  //在应用程序终止之前将更改保存在应用程序的托管对象上下文中。 
  自我 .saveContext() 
  } 
  // MARK:-核心数据栈 
  懒惰的 varpersistentContainer:NSPersistentContainer = { 
  / * 
  应用程序的持久性容器。  这个实现 
  创建并返回一个容器,并已为 
  应用到它。  该属性是可选的,因为存在合法的 
  可能导致存储创建失败的错误条件。 
  * / 
  容器= NSPersistentContainer(名称:“您的数据模型文件”) 
  container.loadPersistentStores(completionHandler:{(storeDescription,error)  
  如果  error = error as NSError?  { 
  //用代码替换此实现,以正确处理错误。 
  // fatalError()使应用程序生成崩溃日志并终止。  尽管此功能在开发过程中可能很有用,但您不应在运输应用程序中使用此功能。 
  / * 
  出现错误的典型原因包括: 
  *父目录不存在,无法创建或不允许写入。 
  *由于设备锁定时的权限或数据保护,无法访问持久性存储。 
  *设备空间不足。 
  *无法将商店迁移到当前模型版本。 
  检查错误消息以确定实际的问题是什么。 
  * / 
  fatalError(“未解决的错误\(错误),\(error.userInfo)”) 
  } 
  }) 
  返回容器 
  }() 
  // MARK:-核心数据保存支持 
  func saveContext(){ 
  上下文= persistentContainer.viewContext 
  如果 context.hasChanges { 
   { 
  尝试 context.save() 
  } { 
  //用代码替换此实现,以正确处理错误。 
  // fatalError()使应用程序生成崩溃日志并终止。  尽管此功能在开发过程中可能很有用,但您不应在运输应用程序中使用此功能。 
   nserror =错误 NSError 
  fatalError(“未解决的错误\(nserror),\(nserror.userInfo)”) 
  } 
  } 
  } 

打开现有应用程序,并将以上所有内容粘贴到应用程序的AppDelegate.swift文件的末尾。

现在我们已经完成了这个临时项目,请随时关闭并删除它。

在更新的AppDelegate.swift文件的顶部,您需要导入Core Data库,因此在此行之后:

 导入UIKit 

加:

 导入CoreData 

现在我们需要实际的数据模型文件,因此按⌘N ,向下滚动到“核心数据”部分,然后选择“数据模型”。

选择一个名称(将其命名为与您的项目相同的名称),然后您应该在Xcode文件管理器中看到yourProjectName.xcdatamodeld

最后一步是返回AppDelegate.swift并确保以下行:

 让容器= NSPersistentContainer(名称:“您的数据模型文件”) 

已更新以反映您创建的数据模型文件的名称(即,将“ your-data-model-file”替换为yourProjectName.xcdatamodeld的yourProjectName部分。

现在,您可以进入数据模型并开始添加实体及其属性,或者从核心数据功能中添加所需的任何内容。

差不多了! 我们希望本文对您有所帮助,如果我们可以为您的任何应用项目或想法提供帮助,请与我们联系。