Objective c 有时NSArrayController在核心数据删除/更新后不刷新NSTableView
我正在使用NSArrayController绑定从核心数据填充NSTableView。NSArrayController已连接到mainQueueConcurrencyType托管对象contextmain托管对象。 主托管对象上下文的父级是privateQueueConcurrencyType后台托管对象上下文。主托管对象上下文上的Save调用将把更改推送到后台托管对象上下文,后台托管对象上下文上的Save调用将保存到持久存储 为NSArrayController在xib中启用了“准备内容”和“可编辑” 核心数据表: 路径 日期 地位 我在路径中添加了唯一的约束 有时,在核心数据保存后,NSArrayController不会从排列的对象中删除已删除的对象Objective c 有时NSArrayController在核心数据删除/更新后不刷新NSTableView,objective-c,cocoa,core-data,nstableview,nsarraycontroller,Objective C,Cocoa,Core Data,Nstableview,Nsarraycontroller,我正在使用NSArrayController绑定从核心数据填充NSTableView。NSArrayController已连接到mainQueueConcurrencyType托管对象contextmain托管对象。 主托管对象上下文的父级是privateQueueConcurrencyType后台托管对象上下文。主托管对象上下文上的Save调用将把更改推送到后台托管对象上下文,后台托管对象上下文上的Save调用将保存到持久存储 为NSArrayController在xib中启用了“准备内容”和
[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
}];
有人能帮我吗?显然,当上下文发生变化时,会通知NSArrayController。此通知在mergeChangesFromContextDidSaveNotification中发送:如果automaticallyMergesChangesFromParent为YES,则会自动调用该通知。当您说托管对象时,您是指NSManagedObjectContext吗?对象是否已从主上下文中删除?@Willeke是,更新了问题。对象是否未从主上下文中删除?或者该对象是否已从主上下文中删除,而不是从数组控制器中删除?@Willeke对象已从主上下文中删除,但不是从数组控制器中删除。目前,我添加了一个快速修复方法,从上下文中删除对象后,我正在检查对象是否存在于arrayController.arrangedObjects中,如果存在,我将使用[arrayController removeObject:entryToRemove]。