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

Swift-iCloud核心数据在同步之前重复先前添加的数据,swift,core-data,icloud,Swift,Core Data,Icloud,我不知道如何在标题中解释这种情况:如果应用程序是第一次启动,我会在核心数据(默认设置)中添加信息。现在一切正常,iCloud帐户被合并,我使用本地存储接收:1和使用本地存储:0现在我使用iCloud,核心数据中的信息与我的iCloud帐户合并。当我使用相同的iCloud帐户在其他设备上运行应用程序时,我的应用程序会添加默认设置;当iCloud使用本地存储向我发送时:0来自第一个设备的默认设置会添加到第二个设备中,并且我有两次相同的值。我的默认设置添加了2次:D。。。 如何防止这种情况发生?在使用

我不知道如何在标题中解释这种情况:如果应用程序是第一次启动,我会在核心数据(默认设置)中添加信息。现在一切正常,iCloud帐户被合并,我使用本地存储接收
:1
使用本地存储:0
现在我使用iCloud,核心数据中的信息与我的iCloud帐户合并。当我使用相同的iCloud帐户在其他设备上运行应用程序时,我的应用程序会添加默认设置;当iCloud使用本地存储向我发送
时:0
来自第一个设备的默认设置会添加到第二个设备中,并且我有两次相同的值。我的默认设置添加了2次:D。。。
如何防止这种情况发生?

在使用iCloud核心数据时,您需要自己检测重复数据,并以对应用程序有意义的方式处理它们。核心数据不在乎您是否创建了重复条目,因此,如果您的应用程序将内置数据复制到多个设备上的永久存储中,iCloud将很乐意为您提供重复条目。如果你使用3台设备,你会得到3份拷贝,等等

要执行此操作,您需要观察持久存储的DidImportubiquitoUsContentChangesNotification,查找重复项,然后将其删除。由于您使用的是应该具有固定已知值的内置应用程序数据,因此您可以通过查看该通知上的
userInfo
字典轻松找到这些数据。请记住,当您收到此通知时,这些对象已经插入,,因此您确实需要删除它们以防止重复


对于与预填充数据无关的副本,这更困难,但并非不可能。这听起来不像是你的情况,但为了以防万一,我刚才在一篇博客文章中解释了这一点:

persistentStoreDidImportUbiquitousContentChanges仅在我在另一台设备上添加了某些内容并将其导入当前设备时才起作用。当我第一次在其他设备上启动应用程序时,我没有收到PersistentStoredImportubiquitoUsContentChanges通知,iCloud会自动从第一个设备添加我的数据,数据会重复。。。