小编The*_*ind的帖子

objectWithID:与existingObjectWithID之间无法解释的行为差异:

我理解这两个调用之间记录的差异.但是,有人知道我注意到以下观察到的行为的原因:

如果我有一个parentContext和一个临时的childContext,我使用childContext来编辑,插入和删除对象,如果使用[childContext objectWithID:objectID]; 为了检索存在于父上下文中的已知现有托管对象,它有时会给我一个带有故障的对象,在被触发时失败并生成异常.我理解objectWithID:在设计中,无论是否存在给定objectID的实际managedObject,它总是会返回一个处于故障状态的对象.但是,如果对象实际存在于父上下文中,我希望当访问任何属性时,将始终从父上下文成功检索对象(例如,将触发错误)而没有任何问题.如果我使用[childContext existingObjectWithID:objectID]; 我发现它确实总能成功.

为了记录,我已经关闭了子上下文的缓存,并且在调用[childContext resetContext]之后发生了同样的行为 - 因此它不是悬挂的旧缓存数据的人工制品,与父上下文不一致.

在我看来,单独的文档不足以解释这种行为.我当然可以将它用于体验,并且只是说"我现在知道总是使用existingObjectWithID:当将对象ID传递给我的子编辑上下文执行块时"但我感到不安并且想要确切地了解这里发生了什么(不是至少所以我可以理解,如果使用一个相对于另一个有任何性能影响,但也了解约束是什么,所以我可以确保没有一些不好的做法,我在我的代码中不必要地实现,然后使用错误或低效的调用来修复它).

core-data ios

8
推荐指数
1
解决办法
1432
查看次数

标签 统计

core-data ×1

ios ×1