Iphone 如何确保从上下文而不是缓存中获取核心数据获取属性?

Iphone 如何确保从上下文而不是缓存中获取核心数据获取属性?,iphone,core-data,fetched-property,Iphone,Core Data,Fetched Property,我有一个包含2个实体的托管对象模型 其中一个实体(称之为EA)通过引用第二个实体(称之为EB)的子集中的某些属性来计算其属性 在EA中,我设置了一个带有谓词的“Fetched属性”,该谓词返回我需要的EB对象的子集 当我删除、插入EB对象或更改EB对象时,我使用通知确保EA保持最新。例如,在“保存”之后,EA对象将重新计算其属性 我的问题是,当我使用[self-valueForKey:FetchedPropertyKeyName]在EB模型类中访问Fetched属性时,它似乎只提取缓存版本。换句

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

其中一个实体(称之为EA)通过引用第二个实体(称之为EB)的子集中的某些属性来计算其属性

EA中,我设置了一个带有谓词的“Fetched属性”,该谓词返回我需要的EB对象的子集

当我删除、插入EB对象或更改EB对象时,我使用通知确保EA保持最新。例如,在“保存”之后,EA对象将重新计算其属性

我的问题是,当我使用
[self-valueForKey:FetchedPropertyKeyName]
EB模型类中访问Fetched属性时,它似乎只提取缓存版本。换句话说,第一次是可以的,但是当我添加另一个EA对象时,当我访问获取的属性时,我在返回的数组中没有看到它。当我删除一个对象时,这一点最为明显,因为由于该对象不再存在,我会遇到崩溃

获取属性的文档说明:

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


很抱歉,如果这听起来是一个愚蠢的问题,但不幸的是,我不知道应该在哪里调用
refreshObject:mergeChanges:

编写问题的原则让我再次仔细查看代码,因此我现在有了一个解决方案

我补充说:

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

进入观察方法。这会导致进行提取,在awakeFromFetch方法中,我重新计算了我的所有属性,并且提取的属性现在包含了预期的新数据