早上好,
我在使用带有iCloud的核心数据的Swift 1.2应用程序时出现问题。
我有2个NSManagedObjects的自定义类:实体1代表Notes,实体2代表Projects。 Note对象只有一个Project的属性,但是Project可以包含"包含"许多笔记。
通过iCloud在不同设备之间进行同步时出现问题:当我在设备1上创建新项目时,我立即创建了多个具有新项目作为属性的Note对象,如果我' m&# 34;幸运"在设备2上同步之后,我拥有完全相同的数据...相同的新项目包含相同的注释。
但是,我常常对同步顺序不满意: iCloud首先同步一些新的Notes,但不会同步那些Note对象属性的Project对象。 在这种情况下,导入的Notes是"孤儿"没有分配项目(我已经检查过,这种情况下的项目属性是零),因此显示在tableView的未命名部分。
当发生这种情况时,我有点破坏:设备1上的注释被分配给他们的项目,而设备2则没有,而且永远不会。
我编写了一个方法,在合并persistentStoreDidImportUbiquitousContentChanges
中的上下文后调用,可以将孤儿Notes的项目属性从nil更改为另一个Project,但由于我的新项目实际上没有在此设备上同步,我无法在那里移动它们,只能在不同的Project对象中移动它们。
我无法理解:我认为我尝试做的事情应该是使用iCloud同步对Core Data进行非常基本的使用:创建了一对多关系的两个实体一台设备在设备2上同步后必须保持相同的确切关系。相反,当我不幸运的时候(我继续使用这个词,因为在我看来,我没有任何东西影响同步的顺序,也没有证明某些项目从不同步的原因) ,其中一个实体未在设备2上同步。
我的问题:有没有办法首先同步特定NSManagedObject的所有实例(在我的例子中是Projects),并且只有在同步成功后同步其他类型的NSManagedObjects(Notes)?