Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 有时NSArrayController在核心数据删除/更新后不刷新NSTableView_Objective C_Cocoa_Core Data_Nstableview_Nsarraycontroller - Fatal编程技术网

Objective c 有时NSArrayController在核心数据删除/更新后不刷新NSTableView

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中启用了“准备内容”和

我正在使用NSArrayController绑定从核心数据填充NSTableView。NSArrayController已连接到mainQueueConcurrencyType托管对象contextmain托管对象。 主托管对象上下文的父级是privateQueueConcurrencyType后台托管对象上下文。主托管对象上下文上的Save调用将把更改推送到后台托管对象上下文,后台托管对象上下文上的Save调用将保存到持久存储

为NSArrayController在xib中启用了“准备内容”和“可编辑”

核心数据表: 路径 日期 地位

我在路径中添加了唯一的约束

有时,在核心数据保存后,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
   }];

有人能帮我吗?

显然,当上下文发生变化时,会通知NSArrayController。此通知在mergeChangesFromContextDidSaveNotification中发送:如果automaticallyMergesChangesFromParent为YES,则会自动调用该通知。

当您说托管对象时,您是指NSManagedObjectContext吗?对象是否已从主上下文中删除?@Willeke是,更新了问题。对象是否未从主上下文中删除?或者该对象是否已从主上下文中删除,而不是从数组控制器中删除?@Willeke对象已从主上下文中删除,但不是从数组控制器中删除。目前,我添加了一个快速修复方法,从上下文中删除对象后,我正在检查对象是否存在于arrayController.arrangedObjects中,如果存在,我将使用[arrayController removeObject:entryToRemove]。