当我第一次听说 CoreData 和 CloudKit 集成时,我很高兴,但并不多。我已经对这两个框架有了经验,而且我知道采用更新的过程不会很愉快,这对两个框架来说从来都不是。但我仍然决定更新我的应用程序。
当然,这个过程与我在演示日看到的不同,在演示日您需要做的就是将 NSPersistentContainer 更改为 NSPersistentCloudKitContainer。
当我开始为我拥有大量用户群和用户数据的旧时实时应用程序采用此功能时,问题就开始出现了。在这篇文章中,我将介绍我在采用 CoreData+CloudKit 集成时遇到的问题以及我是如何处理这些问题的。
从我们知道的文档中,我们需要做的(几乎¹)是移动到 CoreData+CloudKit 是将我们的NSPersistentContainer重命名为NSPersistentCloudKitContainer。但是,这对我的项目来说还不够。出于某种原因,我的容器已加载,但它只是没有 +CloudKit 部分的 CoreData。花了一些时间才弄清楚这个问题。问题是 Core Data 是在 iOS 10 之前添加到项目中的,而 NSPersistentStore 位于 Documents 目录中。默认 NSPersistentStore 的位置路径随 iOS 10 更改为 Application Support 文件夹。事实证明,如果您为持久存储设置默认路径——一切都会按预期工作:CoreData+CloudKit。那是什么!
此外,我想介绍一些对我有用的基本 CoreData 堆栈配置(为清楚起见,我删除了一些描述选项):
//This code sni