我有一个包含 2 个实体的托管对象模型。
其中一个实体(我们称之为EA)通过引用第二个实体(称之为EB)的子集中的一些属性来计算它的属性。
在EA中,我设置了一个带有谓词的“Fetched Property”,该谓词返回我需要的EB对象的子集。
当我删除、插入EB对象或更改EB对象时,我使用通知来确保EA保持最新。因此,例如在“保存”之后,EA对象将重新计算其属性。
我的问题是,当我访问 Fetched 属性(我在EB模型类中使用)[self valueForKey:FetchedPropertyKeyName]
时,它似乎只是提取缓存的版本。换句话说,第一次很好,但是当我添加另一个EA对象时,当我访问获取的属性时,我没有在返回的数组中看到它。这在我删除一个对象时最为明显,因为该对象不再存在而导致崩溃。
Fetched Properties 的文档说:
如果目标实体中的对象发生更改,您必须重新评估获取的属性以确保它是最新的。您使用 refreshObject:mergeChanges: 手动刷新属性——这会导致在下次触发对象故障时再次执行与该属性关联的获取请求。
对不起,如果这听起来是一个愚蠢的问题,但不幸的是我没有看到我应该在哪里打电话refreshObject:mergeChanges:
??