我正处于创建应用程序的早期阶段,我希望在该应用程序中保存、同步和备份数据.该应用程序不会存储任何文件,只会将数据存储在数据库中.它将是iOS8及更高版本,这样我就可以使用CloudKit了.我做了一些研究,但仍然不清楚核心数据、iCloud和CloudKit是如何协同工作的.

据我所知,CloudKit只是在云中获取和检索数据的一种方式.CloudKit只是一种与iCloud同步数据的不同方式吗?

我的问题是:

  1. 如果我使用了CloudKit,还需要创建本地核心数据数据库吗?

    • 如果是,它会自动与iCloud同步,还是我必须调用方法来存储到这两个地方?
  2. 如果数据只存储在云中,当iOS设备未连接到互联网时,用户将能够访问它.我读到CloudKit只有有限的缓存.

  3. 如果未启用iCloud帐户,该功能将如何工作.

如果有人能在离线和在线保存和同步核心数据数据库的过程中分解每种技术的功能.

我目前的理解是:

  • 核心数据用于本地存储数据

  • iCloud同步数据并将其存储在云中

  • CloudKit使您能够在云中存储和管理数据??

我希望我为这个问题提供了足够的信息,不要结束.

推荐答案

是这样的:

  • 核心数据本身是完全本地的,不会自动与苹果的任何云服务协同工作.
  • Core Data with iCloud enabled通过iCloud开启同步.保存在核心数据中的任何更改都会传播到云中,云中所做的任何更改都会自动下载.数据存储在iCloud和本地持久存储文件中,因此即使在设备脱机时也可以使用.您不必编写任何特定于云的代码,只需添加对传入更改的侦听(这与在不同的托管对象上下文中所做的更改非常相似).
  • CloudKit与核心数据无关.这不是同步系统,这是传输系统.这意味着,无论何时您想要读/写云数据,您都需要进行显式的CloudKit API调用才能做到这一点.没有什么事情是自动发生的.CloudKit不在设备上存储数据,因此如果设备离线,数据将不可用.CloudKit还添加了一些使用iCloud的核心数据所没有的功能,比如公共共享数据和只下载部分数据集而不是全部数据的能力.

如果您希望将CloudKit与核心数据一起使用,则必须编写自己的自定义代码来在托管对象和CloudKit记录之间进行转换.这不是不可能的,但需要编写更多的代码.might会更可靠,但现在就断言还为时过早.

我写了a blog post篇文章,从过go 使用过核心数据和iCloud的人的Angular 来描述CloudKit.

2016年6月Update日:截至the most recent documentation for NSPersistentStoreCoordinator日,与iCloud核心数据相关的所有内容都标记为已弃用.因此,在新的开发中,可能应该避免这种情况.

Ios相关问答推荐

如何在SwiftUI中绑定文本字段,同时仍使用它来存储Collection 夹?

在SwiftData中从@ Query创建可排序、有序和分组的数据

Xcode15.3上的生成错误:调用的对象类型';facebook::flipper::SocketCertificateProvider';不是函数或函数指针

验证开发人员应用程序证书是否已在您的设备上验证

如何在SwiftUI中为带有CornerRadius的矩形创建下边框?

iphone 11 和 iphone 12 对于相同的布局显示不同的结果

将 URLCache 子类与 URLSession 一起使用

我需要二进制文件来进行 App Store 应用程序传输吗?

使用 SceneKit 从 CapturedRoom.walls 重新创建 RoomPlan

.overlay 和 body 是什么 swift 概念

使用swift将图像转换为A4大小的pdf

在iOS7半透明导航栏中获取正确的 colored颜色

在设备上卸载 ios 应用程序后如何在 ios 中保留 identifierForVendor?

iPhone iOS 无法正确显示 box-shadow

iOS swift从另一个数组中删除一个数组的元素

iOS 10 错误:UICollectionView 接收到具有不存在索引路径的单元格的布局属性

如何启用滑动以删除 TableView 中的单元格?

iOS WKWebView 不显示 javascript alert() 对话框

用户拒绝使用后如何提示用户打开位置服务

在 React Native 中保存敏感数据