core-data - 今日 iCloud + 核心数据(2015 年 7 月 10 日)

标签 core-data synchronization icloud cloudkit ensembles

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

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

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

谢谢

最佳答案

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

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

  • 如果您像我一样不想重新开始使用 CloudKit,它运行可靠但需要您手动处理大部分同步工作以及将 CKRecords 转换为 ManagedObjects,请提供 Ensembles.io 一个机会:它对我来说效果很好,Core Data 和 iCloud 之间的层在我的情况下确实有效,而 CD+iCloud 没有。
    我使用的是 1.0 版本,它是开源的,支持 iCloud 作为其可能的后端之一(而 2.0 版,付费,支持更多);几天后,我获得了与自动重复数据删除的可靠同步(您必须提供一个 uniqueIdentifier 属性才能使其工作,但我已经有了一些东西......)。
    我还没有弄清楚的唯一问题:有时(我会说是 10 个中的 1 个)对象在编辑或删除时不会立即同步,但在添加另一个对象时它总是在另一台设备上,编辑或删除:当这些延迟发生时,没有任何东西丢失并且所有内容都已为我“自动”处理,但是,我仍然希望所有内容始终立即同步。
    Ensembles 也有一个很好的调试日志记录,你会喜欢来自 vanilla CD+iCloud 的东西。
    如果你想尝试一下,你应该看看这些资源:
  • Ensembles.io company website
  • Ensembles on Github
  • A presentation/introduction from the creator of Ensembles
  • This, and other posts, on a blog I found after I implemented Ensembles in my Swift project; I could have used these informations, if I had found them before... but they're more useful if you're writing Swift code, if you're Objective C then the official Ensembles book is the way to go
  • 如果你绝对确定你不想要 Core Data 和 iCloud 之间的层/第三方代码(我自己也是这么认为的,但是当我意识到我失去了三个月的生命并且一无所获时我改变了主意) ,我在网上找到的并且看起来更有希望的 Core Data + iCloud 的实现是这些:
  • Sample Library Style Core Data Apps with iCloud Integration, looks a bit complex to me, but I've read many good things
  • Tim Roadley's book and sample code

  • 我还没有尝试过这最后两个解决方案,因为我最后的攻击计划是尝试 Ensembles,如果它对我不起作用,则采用这些方法。由于 Ensembles 对我来说非常好,我不需要尝试它们,但它们看起来还是很稳固的。

    最后一个让我感到困扰的想法是:在 2015 年的 WWDC session 中,没有提到 Core Data + iCloud。对我来说,这对我们选择的同步解决方案来说意味着厄运。

    希望这可以帮助。

    关于core-data - 今日 iCloud + 核心数据(2015 年 7 月 10 日),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331435/

    相关文章:

    ios - 我的 iOS 7 应用程序需要 iCloud 开/关开关吗?

    objective-c - IOS - CoreData - 插入具有已插入关系实体的新实体

    iphone - 核心数据 : Sort and Section on Relationships

    ios - 多个应用程序通过应用程序组对 CoreData 的不同权限

    ios - 无处不在容器中带有 .icloud 扩展名的隐藏文件

    ios - 将本地文件移动到iCloud时如何判断本地文件是否较新?

    ios - NSFetchedResultsController 部分按类排序

    git - 如何跨 2 个服务器同步 Git 存储库

    iOS 同步使用状态方法,而不仅仅是对事件使用react

    java - 使用 3 个 PetersonLock 的数组来同步 4 个进程