使用iCloud同步复制CoreData记录

时间:2013-11-07 22:17:36

标签: ios objective-c core-data icloud

当核心数据与iCloud同步时,偶尔我的所有记录都会翻倍。我相信这会在重新安装时发生,其中应用程序尚未同步数据,创建新数据集,然后iCloud同步,每个模型的每条记录都有两倍。

有没有办法防止这种行为?现在我正在检查每个模型的加载和数据同步以进行复制,但这看起来很混乱和黑客。

2 个答案:

答案 0 :(得分:0)

iCloud异步传输设备之间的数据,并且在向iCloud容器添加数据和实际传输数据之间可能需要相当长的时间。元数据在设备之间传输速度更快,但即使这样也可能会延迟。

这一点很重要的原因是您永远不能在一台设备上进行测试,以保证数据尚未添加到iCloud。一台设备可能有种子数据,但尚未开始上传其文件/元数据。此时,第二个设备无法知道来自第一个设备的种子数据。

Apple的建议是在每次合并后通过去除数据来处理这个问题。每个设备只添加自己的种子数据,如果发现它已被添加两次,则删除其中的一半,小心确保在每个设备上删除相应的对象。

这种方法有效,但感觉有点像黑客。在我的Ensembles框架中使用的另一种方法是为对象提供全局标识符,以便同步框架可以自动导入和合并种子数据。这就是Ensembles采用的方法,它使播种数据更容易,而且不那么特别。

答案 1 :(得分:-2)

尝试仅使用iCloud商店是愚蠢的。数据必须存储在本地和iCloud中,否则您将遇到严重问题。

如果您需要核心数据,请使用MagicalRecord

相关问题