我正在使用NSArrayController
绑定从核心数据填充NSTableView
。 NSArrayController
连接到mainQueueConcurrencyType
受管对象上下文(主受管对象)。
主管理对象上下文的父级是privateQueueConcurrencyType
(后台管理对象上下文)。在主管理对象上下文上的Save调用会将更改推送到后台管理对象上下文,而在后台管理对象上下文上保存将保存到持久性存储。
Prepares contents
启用了 Editable
和NSArrayController
核心数据表:
路径
日期
状态
我对路径添加了唯一的约束。
保存核心数据后,有时NSArrayController
不会从已安排的对象中删除已删除的对象。
[context performBlock:^{
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"entity" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"path ==%@", path];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
SyncStatusEntry *syncStatus = [fetchedObjects firstObject];
NSInteger status = syncStatus.status.integerValue;
context deleteObject:syncStatus];
[context save:nil];
// Sometimes NSArrayController still have this object
}];
有人可以帮我吗?
答案 0 :(得分:0)
显然,NSArrayController
在上下文中发生更改时得到通知。此通知以mergeChangesFromContextDidSaveNotification:
发送,如果automaticallyMergesChangesFromParent
为YES
,则会自动调用该通知。