核心数据获取持久性

时间:2011-09-18 03:38:05

标签: iphone core-data

我想知道是否有人可以从Apples Core Data文档中澄清以下内容:

  

直到控制器的托管对象之后才会反映更改   上下文已收到processPendingChanges消息。因此,如果   您更改托管对象的属性的值,以便它   获取结果控制器中的位置结果集将更改,   控制器报告的索引通常不会改变   直到当前事件周期结束(当processPendingChanges时)   被调用)。例如,以下代码片段将记录   “相同”:

NSFetchedResultsController *frc = <#A fetched results controller#>;
NSManagedObject *managedObject = <#A managed object in frc's fetchedObjects array#>;
NSIndexPath *beforeIndexPath = [frc indexPathForObject:managedObject];
[managedObject setSortKeyAttribute:
                  <#A new value that changes managedObject's position in frc's fetchedObjects array#>;
NSIndexPath *afterIndexPath = [frc indexPathForObject:managedObject];
if ([beforeIndexPath compare:afterIndexPath] == NSOrderedSame) {
    NSLog(@"same");
}

在当前事件周期结束之前“通常不会改变”究竟是什么意思?我在我的代码中遇到这种情况,但我不确定我是否可以100%依赖我的索引保持不变,直到我明确地在托管对象上下文中执行保存。可以修改上面的代码,而不对上下文执行保存,这样它就不会记录“相同”吗?

1 个答案:

答案 0 :(得分:1)

  

不确定我是否可以100%依赖我的索引保持不变   直到我明确地在托管对象上下文中执行保存。

我不会。 “当前事件周期”是运行循环的当前迭代。