8

几年前,Apple 发布了 Core Data 应用程序的 iCloud 同步。然后我发布了一款适用于 iPad / iPhone / MAC 的应用程序,该应用程序使用新的 Apple 机制共享模型。事情并没有像预期的那样发展。同步机制有时不起作用。例如,在我的情况下,最近几个月,同步很少通过我的 3 台设备顺利结束。上传对象通常可以正常工作。但是新的或删除的对象的下载过程通常会崩溃。Apple 前段时间发布了一种强制设备重新下载所有正常工作的模型对象 (NSPersistentStoreRebuildFromUbiquitousContentOption) 的方法,但这不是一个可接受的解决方案。

我的问题:是否有人已经完成让 iCloud + Core Data 正常工作?iOS 9 + El capitan 下运行 iCloud+CD 怎么样,有什么经验吗?

我正在评估迁移到新的 CloudKIT API,但我不喜欢在设备离线时自行管理对象上传的想法。指示模型更改的推送通知的新机制是否可以正常工作?

谢谢

4

1 回答 1

8

这是我这几个月来深入研究的一个问题,恐怕没有明确的答案。

以下是我可以根据我的经验告诉你的:

  1. 如果你和我一样不想重新开始使用 CloudKit,它工作可靠,但需要你手动处理大部分同步工作以及将 CKRecords 转换为 ManagedObjects,给Ensembles.io一个机会:它对我来说非常有效,Core Data 和 iCloud 之间的层在我的情况下确实有效,而 CD+iCloud 没有。我使用的是 1.0 版本,它是开源的,支持 iCloud 作为其可能的后端之一(而 2.0 版本,付费,支持更多);几天后,我通过自动重复数据删除获得了可靠的同步(您必须提供一个 uniqueIdentifier 属性才能使其正常工作,但我已经准备好了一些东西......)。我还没有弄清楚的唯一问题:有时(我会说 10 例中有 1 例)一个对象在编辑或删除时不会立即同步,但是当另一个对象添加时它总是会在另一台设备上,编辑或删除:当这些延迟发生时,一切都没有丢失,一切都为我“自动”处理,但我仍然' 更希望一切总是立即同步。Ensembles 也有一个很好的调试日志,你会喜欢来自 vanilla CD+iCloud 的东西。如果你想尝试一下,你应该看看这些资源:

  2. 如果您绝对确定您不想要 Core Data 和 iCloud 之间的层/第三方代码(我自己也是这么想的,但是当我意识到我失去了三个月的生命并且没有得到任何回报时,我改变了主意) ,我在网上找到并看起来更有希望的 Core Data + iCloud 的实现是:

我还没有尝试过这最后两种解决方案,因为我最后的攻击计划是尝试 Ensembles,如果它对我不起作用,请使用这些方法。由于 Ensembles 对我来说非常好,我不需要尝试它们,但它们再次看起来很可靠。

最后一个困扰我的想法:在 2015 年的 WWDC 会议上,没有提到 Core Data + iCloud。对我来说,这意味着我们选择的同步解决方案注定要失败。

希望这可以帮助。

于 2015-07-10T17:10:28.860 回答