Core data iCloud&x2B;今日核心数据(2015年7月10日)

Core data iCloud&x2B;今日核心数据(2015年7月10日),core-data,synchronization,icloud,cloudkit,ensembles,Core Data,Synchronization,Icloud,Cloudkit,Ensembles,几年前,苹果发布了核心数据应用程序的iCloud sync。然后,我发布了一个应用程序,用于iPad/iPhone/MAC,使用新的苹果机制共享模式。 事情并没有如预期的那样发展。同步机制有时不起作用。例如,在我的例子中,在过去的几个月里,通过我的3台设备,同步很少能很好地结束。上传对象一般都很好。但新对象或已删除对象的下载过程通常会崩溃。 苹果不久前发布了一种方法,强制设备重新下载该模型的所有对象(NSPersistentStoreRebuildFromUbiquitousContentOpt

几年前,苹果发布了核心数据应用程序的iCloud sync。然后,我发布了一个应用程序,用于iPad/iPhone/MAC,使用新的苹果机制共享模式。 事情并没有如预期的那样发展。同步机制有时不起作用。例如,在我的例子中,在过去的几个月里,通过我的3台设备,同步很少能很好地结束。上传对象一般都很好。但新对象或已删除对象的下载过程通常会崩溃。 苹果不久前发布了一种方法,强制设备重新下载该模型的所有对象(NSPersistentStoreRebuildFromUbiquitousContentOption),这种方法正常工作,但这不是一种可接受的解决方案

我的问题:是否有人成功地让iCloud+核心数据正常工作?在iOS 9+El capitan下运行iCloud+CD怎么样,有经验吗

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


谢谢

这是我在过去几个月里深入研究的一个问题,恐怕没有一个明确的答案

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

  • 如果您和我一样不想重新开始使用CloudKit,它工作可靠,但需要您手动处理大部分同步工作以及将CKRecords转换为ManagedObject,请给Ensembles.io一个机会:它对我来说非常有效,核心数据和iCloud之间的层在我的情况下确实有效,CD+iCloud没有的地方。 我使用的是开源的1.0版本,支持iCloud作为其可能的后端之一(付费的2.0版本支持更多);在几天内,我获得了与自动重复数据消除的可靠同步(您必须提供一个uniqueIdentifier属性才能使其工作,但我已经准备好了一些东西…)。 唯一一个我还没有弄明白的问题是:有时(我想说,10个中有1个)一个对象在被编辑或删除时不会立即同步,但当另一个对象被添加、编辑或删除时,它总是会在另一台设备上运行:当这些延迟发生时,没有任何东西丢失,所有东西都会“自动”为我处理,但,我希望所有的东西都能马上同步。 Ensembles还有一个很好的调试日志记录,你会喜欢香草CD+iCloud。 如果您想尝试一下,请查看以下资源:

  • 如果您完全确定您不希望核心数据和iCloud之间存在层/第三方代码(我自己也这么认为,但当我意识到我失去了三个月的生命,却没有得到任何回报时,我改变了主意),那么我在网上找到的、看起来更有希望的核心数据+iCloud的实现如下:

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

    困扰我的最后一个想法是:在2015年的WWDC会议上,没有提到核心数据+iCloud。对我来说,这意味着我们正在选择的同步解决方案的末日


    希望这能有所帮助。

    iOS 9仍处于测试阶段,规格可能会日新月异。。。我想你还没有回答我的任何问题。我的想法是:我认为没有人会给出明确的答案,因为给出的答案可能在任何时候都会失效。+1合奏。就我个人而言,我很久以前就放弃了苹果的iCloud与核心数据的集成。现在可能已经修好了,有人说已经修好了。。。但我找到了一个简单的解决方案,我把自己卷了起来,然后是合奏,再也没有回头看。这是我觉得苹果完全失败的少数几个领域之一,我完全放弃了这项技术。Ensembles非常擅长它的功能,你会想为升级付费,即使你可能不需要它。@JodyHagins我完全同意你的观点;我已经读过很多次了,现在的情况更好了,但我仍然没有找到一个真正可行的解决方案来让它发挥作用:如果现在不是那么糟糕,我只能想象几年前它的效果有多糟糕;)。我确认,购买Ensemble2.0或至少为这本书付费的愿望很强烈,只是为了支持它们,但我正在一个非常紧张(不存在)的预算下开发一个爱好应用程序,所以我不得不等到发布时先卖出几本。嗨,cdf1982,据我所知,第三方同步替代方案的问题在于,如果设备离线,最终连接到WIFI网络,它们将无法运行。也就是说:假设您处于脱机状态,并且添加了一个对象。然后你把手机放在口袋里,当你走路时,它会连接到WIFI。使用iCloud+CD,我认为有一个系统队列可以自动上传您的对象。但是第三方同步机制不能。这是真的吗?Ensembles实际上不是3d派对同步机制,因为它实际上使用iCloud(或Dropbox,或其他)来同步数据。在我的例子中,我在设备1上添加了一个对象,它立即与云同步(集成iCloud作为后端);如果设备2处于脱机状态,它将在联机后立即获取项目(当然,“立即”和“尽快”通常是几秒钟,但有时需要更多时间,您无法通过iCloud控制)。如果我理解的话,您担心的是您的应用程序在不活动时不会加载从云端接收的同步数据,对吗?。。。我想要的行为:我想要用户在应用程序返回前台时发现它已经更新。好消息是,当我不在的时候,我的手机记录了3次“在BG中更新”,所以后台模式和
    application.setMinimumBackg