核心数据 - iCloud 行为

Posted

技术标签:

【中文标题】核心数据 - iCloud 行为【英文标题】:Core Data - iCloud behavior 【发布时间】:2013-02-10 00:34:05 【问题描述】:

我正在使用 NSManagedDocument 作为核心数据堆栈在我的核心数据应用程序中实现 iCloud 支持。

一切似乎都运行良好,但出现了一些意外行为:

在我的 iPhone 和 iPad 上安装通用应用程序:

从 iPhone 添加的实体通过 iCloud 存储到 iPad; 从 iPad 添加的实体通过 iCloud 传输到 iPhone; 从 iPhone 添加的实体,在 iPhone 上删除,在 iPad 上自动删除 从 iPad 添加的实体,在 iPad 上删除的实体在 iPhone 上自动删除

然而……

从 iPhone 添加的实体,在 iPad 上删除而不是在 iPhone 上删除 从 iPad 添加的实体,在 iPhone 上删除的实体不会在 iPad 上删除

这是预期的行为吗?这不是 Apple 'notes' 应用程序在我的 iPhone 和 iPad 上的行为方式。对任何笔记的任何更改都会反映在所有设备上。

如果这不是正确的 iCloud 行为,我可能误入歧途的任何想法?

非常感谢。

【问题讨论】:

你解决了这个问题吗? 【参考方案1】:

这是预期的行为吗?

这取决于您如何定义“预期”。这不是 Apple 打算让它工作的方式,但你不是第一个遇到这个问题的人。在实践中,是的,至少在某些时候是预期的。

您应该检查的几件事:

即使您退出并重新启动应用程序,这种情况是否仍然存在?可能是实例被删除,但您的应用程序未正确更新其 UI。这会使对象看起来仍然存在,直到您重新启动应用程序。

查看您从 iCloud 收到的“已导入”通知。它应该包含插入、更新和删除实例的对象 ID。确保它正确指示接收端已删除哪些对象。

检查您的对象处理,确保您没有以某种方式保留本应删除或重​​新创建的对象。

但请记住,如果您将 Core Data 与 iCloud 一起使用,您是在自找麻烦,您可能无法解决此问题。 Core Data 的 iCloud 集成仍然不是那么可靠。预计问题,可能太严重而无法修复。

【讨论】:

以上是关于核心数据 - iCloud 行为的主要内容,如果未能解决你的问题,请参考以下文章

iCloud 和轻量级迁移

核心数据合并行为

iCloud 钥匙串不断丢失数据

获取未保存数据时的奇怪核心数据行为

带有核心数据/MagicalRecord 意外行为的 iOS 单元测试

核心数据:使用延迟实例化时的奇怪错误行为