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属性现在包含了预期的新数据.
| 归档时间: |
|
| 查看次数: |
2676 次 |
| 最近记录: |