在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部分。
现在,您可以进入数据模型并开始添加实体及其属性,或者从核心数据功能中添加所需的任何内容。
差不多了! 我们希望本文对您有所帮助,如果我们可以为您的任何应用项目或想法提供帮助,请与我们联系。