【问题标题】:"Core Data with iCloud" vs "iCloud Core Data"“带有 iCloud 的核心数据”与“iCloud 核心数据”
【发布时间】:2018-01-08 18:56:19
【问题描述】:

我的问题是:如何在不找到太多“iCloud Core Data”的情况下找到有关“Core Data with iCloud”的更多信息?

这两个东西的名字非常相似,这使得很难找到关于一个的信息而不同时找到另一个。

当我说“iCloud Core Data”时,我指的是最近在 iOS10 中被弃用的功能。 “iCloud Core Data”涉及具有普遍性选项的 Core Data 存储,这意味着使用 iCloud 在各种设备上同步单个记录更新。

当我说“使用 iCloud 的 Core Data”时,我指的是基于 iCloud Drive 服务构建的不同功能,我相信它基于将 Core Data 存储作为一个整体从设备同步到设备。 “带有 iCloud 的数据线”显然还在继续。

Apple 将两者区分开来: 只有客户端 Core Data iCloud API 符号被弃用。 Core Data with iCloud 建立在 iCloud Drive 服务之上。

谁能帮忙指出一些关于较新的“Core Data with iCloud”的文档?

【问题讨论】:

  • 我猜 Core Data with iCloud 意思是 CloudKit
  • @vadian:我还在学习CloudKit,但到目前为止我的印象是它与“Core Data with iCloud”和“iCloud Core Data”都有很大的不同。我认为这是因为 CloudKit 使用了与 Core Data 完全不同的 API,并且我看到了一个示例,其中可以使用 CloudKit 而无需使用任何 Core Data。
  • 只有两种模式:iCloud Core Data(已弃用)和CloudKit
  • @vadian:是的,你是对的。如果您在对象级别涉及 Apple 的云服务,则实际上只有两种用于设计对象持久性的模式。 (您提到的两个。)但是,我在问我的问题,因为如果您想要的只是整个 Core Data 数据存储的备份和复制,那么似乎还有第三种选择,那就是前面提到的“带有 iCloud 的核心数据”。我正在寻找这方面的文档。

标签: ios swift core-data icloud icloud-api


【解决方案1】:

我想这就是你要找的Incorporating iCloud with CoreData

基本上,您的应用程序中有一个 CoreData 存储,启用 iCloud 可以使其跨设备保持同步,而您的应用程序无需直接与 CloudKit 通信。

我认为“iCloud Core Data”是指使用 CloudKit 作为数据存储,这并不可怕,但并不像简单地使用 CoreData 那样简单。

【讨论】:

  • 感谢您的链接;这非常有用,而且似乎专门指的是新功能。我确实认为 CloudKit 不是“iCloud Core Data”,也不是“Core Data with iCloud”,而是第三件事。 CloudKit 似乎使用了完全不同的 API,并且有根本不使用 Core Data 的示例项目。
【解决方案2】:

没有用于通过 iCloud 跨设备同步整个 Core Data 持久存储文件的系统。他们将现已弃用的 iCloud 支持构建到 Core Data 中的原因是同步文档文件不起作用。这样做或多或少保证会丢失数据、损坏文件或两者兼而有之。

使用 CloudKit 有时被称为使用 iCloud,这很不幸,因为它混淆了两个不同的东西。

如果您想在不使用 CloudKit 的情况下跨设备同步 Core Data,请查看Ensembles。它在概念上与旧的 iCloud 支持相同,但实现方式不同。

【讨论】: