微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

两个 NSArrayController 绑定到同一个 NSManagedObjectContext

如何解决两个 NSArrayController 绑定到同一个 NSManagedObjectContext

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。