我正处于创建应用程序的早期阶段,我希望保存,同步和备份数据。该应用程序不会将任何文件仅存储在数据库中。它将是iOS 8及以上,因此我可以使用CloudKit。我做了一些研究,但仍不清楚Core Data,iCloud和CloudKit如何协同工作。
据了解,CloudKit只是一种从云端获取和检索数据的方法。 CloudKit是一种与iCloud同步数据的不同方式吗?
我的问题是:
如果我使用CloudKit,是否仍需要创建本地核心数据库?
如果数据仅存储在云中,则用户可以在iOS设备未连接到互联网时访问该数据。我读到CloudKit只有有限的缓存。
如果有人能够在离线和在线保存和同步核心数据数据库的过程中分解每种技术的作用。
我目前的理解是:
核心数据用于本地存储数据
iCloud同步云中的数据和存储
CloudKit能够在云中存储和管理数据吗?
我希望我提供足够的信息来解决这个问题。
答案 0 :(得分:179)
它是这样的:
如果您想将CloudKit与Core Data一起使用,您必须编写自己的自定义代码,以便在托管对象和CloudKit记录之间进行转换。这不是不可能的,但它需要编写更多代码。它可能更可靠,但现在说它太早了。
我从过去曾使用Core Data和iCloud的人的角度写了a blog post来描述CloudKit。
更新,2016年6月:自the most recent documentation for NSPersistentStoreCoordinator
起,与iCloud核心数据相关的所有内容都标记为已弃用。因此,应该避免新的开发。
答案 1 :(得分:17)
在iOS 13上,Apple宣布了Core Data中的新功能,以更好地与CloudKit配合使用。主要添加的内容是NSPersistentCloudKitContainer,它基本上可以为您管理Core Data和CloudKit之间的同步。
您可以在WWDC会话Using Core Data with CloudKit中了解更多信息。
Apple还针对这种用法发布了一系列不错的文档:Mirroring a Core Data store with CloudKit。