当核心数据与 iCloud 同步时,有时我的所有记录都会翻倍。我相信这发生在重新安装时,应用程序尚未同步数据,创建一个新数据集,然后 iCloud 同步,每个模型的每条记录都有双倍。
有没有办法防止这种行为?现在我正在检查每个模型的负载和数据同步是否有重复,但这看起来很混乱而且很笨拙。
当核心数据与 iCloud 同步时,有时我的所有记录都会翻倍。我相信这发生在重新安装时,应用程序尚未同步数据,创建一个新数据集,然后 iCloud 同步,每个模型的每条记录都有双倍。
有没有办法防止这种行为?现在我正在检查每个模型的负载和数据同步是否有重复,但这看起来很混乱而且很笨拙。
iCloud 在设备之间异步传输数据,在您将数据添加到 iCloud 容器和实际传输数据之间可能有相当长的时间。元数据在设备之间的传输速度更快,但即使这样也可能会延迟很多。
这很重要的原因是,您永远无法在一台设备上进行测试,以保证数据尚未添加到 iCloud。一台设备可能已播种数据,但尚未开始上传其文件/元数据。此时,第二个设备无法知道来自第一个设备的种子数据。
Apple 的建议是通过在每次合并后对数据进行去删除来处理这个问题。每个设备只添加自己的种子数据,如果发现已经添加了两次,则删除一半,注意确保每个设备上都删除了相应的对象。
这种方法有效,但感觉有点像 hack。在我的Ensembles框架中使用的另一种方法是为您的对象提供全局标识符,以便同步框架可以自动导入和合并种子数据。这就是在 Ensembles 中采用的方法,它使播种数据变得相当容易,并且减少了临时性。
尝试只使用 iCloud 商店是愚蠢的。数据必须同时存储在本地和 iCloud 中,否则您将遇到严重问题。
如果您需要核心数据,请使用MagicalRecord 。