如何确保从上下文而不是缓存中获取Core Data Fetched属性?

Sim*_*onB 3 iphone core-data fetched-property

我有一个包含2个实体的托管对象模型.

其中一个实体(让我们称之为EA)通过引用第二个实体的子集(Call it EB)中的一些属性来计算它的属性.

EA中我设置了一个带有谓词的"Fetched Property",它返回我需要的EB对象的子集.

当我删除,插入EB对象或更改EB对象时,我使用通知来确保EA保持最新.因此,例如在"保存"之后,EA对象将重新计算它的属性.

我的问题是,当我访问所取得的属性(我做EB使用模型类[self valueForKey:FetchedPropertyKeyName]),它似乎只提取缓存版本.换句话说,第一次没问题,但是当我添加另一个EA对象时,我在访问fetched属性时没有在返回的数组中看到它.当我删除一个对象时,这是最明显的,因为这个对象不再存在,导致崩溃.

Fetched Properties的文档说:

如果更改了目标实体中的对象,则必须重新评估fetched属性以确保它是最新的.您使用refreshObject:mergeChanges:手动刷新属性 - 这会导致在下次触发对象故障时再次执行与此属性关联的获取请求.

对不起,如果这听起来是一个愚蠢的问题,但不幸的是我没有看到我应该打电话到哪里refreshObject:mergeChanges:

Sim*_*onB 10

写这个问题的原则使我再次密切关注代码,所以我现在有了解决方案!

我补充说:

[[self managedObjectContext] refreshObject:self mergeChanges:YES];

进入观察方法.这会导致获取,并且在awakeFromFetch方法中我重新评估我的所有属性,而fetched属性现在包含了预期的新数据.