绑定到同一个 NSManagedObjectContext 的两个 NSArrayControllers

Two NSArrayControllers bound to same NSManagedObjectContext

我有两个 nib 文件,每个文件都有自己的 window 由来自相同核心数据管理对象上下文 (MOC) 的数据填充,但每个文件都绑定到不同的数组控制器。问题是,当我在 window 的数组控制器之一中删除数据对象时,它仍然存在于另一个 window 的数组控制器中,即使在保存公共 MOC 并重新启动程序后也是如此.要永久删除不需要的数据对象,我必须在每个 window 处分别将其删除。这似乎不是 Core Data 应有的工作方式。使用相同 MOC 的阵列控制器不应该具有共同的持久数据源吗?

对于绑定数组控制器的设置,仅将 window 的 'delete' 按钮连接到 NSControllerArray 的 'remove:' 方法是不够的。相反,我将此方法子类化并指定目标数据对象的直接 MOC 删除,如下所示:

- (void)remove:(id)sender
{ 
    [MOC deleteObject:[[self selectedObjects] lastObject]];
}