child NSManagedObjectContext 中的 NSOrderedSet 在保存时丢失顺序

NSOrderedSet in child NSManagedObjectContext loses order when saved

我有一些具有 one-to-many parent-child 关系的 NSManagedObjects,其中 "children" 属性 是一个 NSOrderedSet。

当我创建一个新的 child 时,我是在 child NSManagedObjectContext 中创建的。我在 children 集合的索引 0 处插入 child。

在我保存 child 上下文之前,我观察到 parent 的 children 看起来像:

Parent

但是当我继续保存 parent 上下文时,我检查了 "updatedObjects" 属性 并看到 parent 的 children 是有序的错误!

Parent


注意: 这只会发生在新创建的 children 上。如果在我创建 child 上下文时 children 已经存在,我可以更改它们在 child 上下文中的顺序,并且它们在有序集中的位置会适当地保存在 parent 语境。

我试过弄乱 parent 和 child 上下文的合并策略。现在它们被配置为默认值 error-policy 并且在保存时不会抛出任何错误。

我这里的主要问题与 cross-thread 核心数据的使用有关。

我原以为 cross-thread 滥用的症状会更明显,但这就是它们对我的表现。确保我从所有线程正确访问托管对象上下文解决了我的问题。