[英]Sometimes NSArrayController is not refreshing NSTableView after core data delete/update
I am using NSArrayController
Binding to populate NSTableView
from core data. 我正在使用
NSArrayController
Binding从核心数据填充NSTableView
。 NSArrayController
is connected to mainQueueConcurrencyType
managed object context(main managed object). NSArrayController
连接到mainQueueConcurrencyType
管对象上下文(主受管对象)。 parent of main managed object context is privateQueueConcurrencyType
(background managed object context). 主管理对象上下文的父级是
privateQueueConcurrencyType
(后台管理对象上下文)。 Save call on main managed object context will push changes to background managed object context and save on background managed object context will save to persistent store. 在主管理对象上下文上的Save调用会将更改推送到后台管理对象上下文,而在后台管理对象上下文上保存将保存到持久性存储。
Prepares contents
and Editable
are enabled in xib for NSArrayController
在xib中为
NSArrayController
启用了Prepares contents
和Editable
Core data table : 核心数据表:
Path 路径
Date 日期
Status 状态
I have unique constraints added to path. 我对路径添加了独特的约束。
Sometimes NSArrayController
is not removing deleted object from arranged object after core data save. 有时,保存核心数据后,
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
}];
Can anyone please help me out? 有人可以帮我吗?
Apparently NSArrayController
is notified when something changes in the context. 显然,上下文中发生某些更改时会通知
NSArrayController
。 This notification is sent in mergeChangesFromContextDidSaveNotification:
which is automatically called if automaticallyMergesChangesFromParent
is YES
. 该通知以
mergeChangesFromContextDidSaveNotification:
发送,如果automaticallyMergesChangesFromParent
为YES
,则会自动调用该通知。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.