Swift - iCloud Core Data在同步之前重复先前添加的数据

时间:2015-03-05 11:51:48

标签: swift core-data icloud

我不知道如何在标题中用文字解释这种情况:如果App首次启动,我会在Core Data(DEFAULT SETTINGS)中添加信息。现在没关系,iCloud帐户已合并我收到Using local storage: 1Using local storage: 0现在我正在使用iCloud,Core Data中的信息与我的iCloud帐户合并。当我使用相同的iCloud帐户在其他设备上运行app时,我的应用程序会添加默认设置,当iCloud发送给我Using local storage: 0时,第一个设备的默认设置会添加到第二个设备中,并且我有两次相同的值。我的默认设置添加了2次:D ... 如何防止?

1 个答案:

答案 0 :(得分:2)

将iCloud与Core Data一起使用时,您需要自己检测重复项并以适合您应用的方式处理它们。核心数据并不关心您是否创建重复条目,因此如果您的应用程序将内置数据复制到多个设备上的持久存储中,iCloud将很乐意为您提供重复项。如果您使用3台设备,则可获得3份等等。

要执行此操作,您需要观察NSPersistentStoreDidImportUbiquitousContentChangesNotification,查找重复项并删除它们。由于您使用的内置应用数据应具有固定的已知值,因此您可以通过查看该通知上的userInfo字典轻松找到它们。请注意,当您收到此通知时,已插入这些对象,因此您确实需要删除它们以防止重复。

对于与预先填充的数据无关的重复项,它更难但不是不可能。这听起来不像是你的情况,但为了以防万一,这是我前一段时间解释过的博客文章:http://www.atomicbird.com/blog/icloud-complications-part-2