我想知道是否有人可以从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%依赖我的索引保持不变,直到我明确地在托管对象上下文中执行保存。可以修改上面的代码,而不对上下文执行保存,这样它就不会记录“相同”吗?
答案 0 :(得分:1)
不确定我是否可以100%依赖我的索引保持不变 直到我明确地在托管对象上下文中执行保存。
我不会。 “当前事件周期”是运行循环的当前迭代。