将新的Core Data对象插入到多个NSOrderedSet中会忽略索引

将新的Core Data实体(EntityB)插入另一个实体(EntityA)的nsorderedset关系属性时,我得到了奇怪的行为; index将被忽略,并且对象始终插入到有序集的末尾。

要插入的对象是现有对象的副本,使用的是使用自定义副本初始化程序创建的另一个父实体:

// EntityA
@NSManaged var entityBs: nsorderedset    // to-many relationship


// EntityB
@NSManaged var entityA: EntityA?


// Inserting EntityB copy into EntityA 
let entityBCopy = EntityB(entityB: entityBOriginal,newParent: entityA)
entityA.insertIntoEntityBs(entityBCopy,at: index)

entityBs插入之前:

entity0
entity1
entity2
entity3
entity4
在索引2插入entityBs后,

newEntity2

entity0
entity1
entity2
entity3
entity4
newEntity2    < inserted at the end of ordered set,not at index 2

我已经确认indexentityBs内容的范围内。

EntityA使用Core Data Generated accessors,但我也尝试通过键值编码方法手动插入对象-发生相同的问题。这使我想知道这是否是nsorderedset上的问题,而不是核心数据问题。

我不知道为什么会这样,所以欢迎提供任何信息!

abelchu 回答:将新的Core Data对象插入到多个NSOrderedSet中会忽略索引

问题在于export default function createPoller(...) { ... iterator.return = () => { ... } return iterator } 的初始化,尤其是entityBCopy参数的初始化。使用父级关系初始化newParent,然后立即将EntityB实例插入同一父级是多余的。假设在模型中正确设置了所有内容,则Core Data生成的EntityB方法应处理insert的父属性设置。

因此,从初始化程序中删除entityBCopy参数应导致插入正确的索引:

newParent

编码愉快!

本文链接:https://www.f2er.com/3123129.html

大家都在问