【问题标题】:NSOrderedSet in child NSManagedObjectContext loses order when saved子 NSManagedObjectContext 中的 NSOrderedSet 在保存时会丢失顺序
【发布时间】:2019-04-27 13:47:02
【问题描述】:

我有一些具有一对多父子关系的 NSManagedObjects,其中“children”属性是 NSOrderedSet。

当我创建一个新的孩子时,我在一个孩子 NSManagedObjectContext 中这样做。我在子集的索引 0 处插入子元素。

在我保存子上下文之前,我观察到父母的孩子看起来像:

父母

  • 孩子1
  • 孩子2
  • 孩子3
  • Kid4(新)

但是当我继续保存父上下文时,我检查了“updatedObjects”属性,发现父级的子级排序不正确!

父母

  • 孩子1
  • 孩子2
  • 孩子3
  • Kid4(新)

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

我尝试过弄乱父子上下文的合并策略。现在它们被配置为默认的错误策略,保存时不会抛出任何错误。

【问题讨论】:

  • 我假设在该关系的数据模型检查器中,ordered 复选框已打开。另外,我想您需要发布一些代码来显示如何将新孩子添加到关系中。

标签: core-data nsmanagedobjectcontext nsorderedset


【解决方案1】:

我的主要问题与跨线程核心数据的使用有关。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 2011-09-03
    • 2017-03-08
    • 2021-01-16
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多