基于一些有限的测试,我看到如果我
步骤2中的更改不会写回持久性存储,因为我正在更改字典而不是“托管对象”。这是正确的理解吗?
答案 0 :(得分:1)
您很可能滥用字典结果类型。与传统的数据库编程不同,在获取整个对象而不是仅仅一个选定的属性时,您不会浪费宝贵的内存资源,因为有一个名为" faulting"的引擎盖机制。
尝试使用托管对象结果类型(默认)进行提取,您可以非常轻松地操作对象并将其保存回Core Data。您不需要执行额外的提取只是为了获取要更改的对象。
仅在具有大量数据,困难的关系分组逻辑等的特殊情况下考虑字典,这使得绝对必要。
(话虽如此,它不太可能是绝对必要的。我还没有遇到过这样一种情况,即提取字典的必要性不是数据模型设计缺陷的间接结果。)
答案 1 :(得分:0)
是的,有点,你不能直接将字典存回上下文,所以你不能保存任何更新。
如果你得到一个字典对象,那么你需要在其中包含相关的托管对象id(如果它没有聚合)或者进行另一次获取以获得要更新的对象。