Objective c Cocoa绑定仅用于检索

Objective c Cocoa绑定仅用于检索,objective-c,cocoa,core-data,cocoa-bindings,Objective C,Cocoa,Core Data,Cocoa Bindings,我有一个NSTableView,几乎没有控件。所有这些都绑定到数组控制器,其实体是NSManagedObject的子类(或者简单地说是核心数据的实体) 有一个复选框,它从实体获取其值 现在的问题是我不希望复选框值直接更新到coredata。保存只应在“保存”按钮动作时进行 如果您有任何关于如何进行此操作的帮助,我们将不胜感激。请使用[context save:nil]按下保存按钮时,[上下文回滚]否则。有几种方法可以做到这一点,就一个复选框的努力而言,它们都是黑客 但是,如果您有一个用户正在编辑

我有一个
NSTableView
,几乎没有控件。所有这些都绑定到数组控制器,其实体是
NSManagedObject
的子类(或者简单地说是核心数据的实体)

有一个复选框,它从实体获取其值

现在的问题是我不希望复选框值直接更新到coredata。保存只应在“保存”按钮动作时进行


如果您有任何关于如何进行此操作的帮助,我们将不胜感激。

请使用
[context save:nil]按下保存按钮时,
[上下文回滚]否则。

有几种方法可以做到这一点,就一个复选框的努力而言,它们都是黑客

但是,如果您有一个用户正在编辑的整个表单,您只需创建一个子ManagedObjectContext,将复选框和表单的其余部分绑定到该上下文,并根据用户是单击“保存”还是“取消”,合并或放弃该上下文中的全部更改

我是我的超级粉丝。实际上,您可能希望整个GUI在主线程上下文中运行,如果您试图绕过默认的即时持久性,则保存(在用户确认后)会被推送到写入器上下文并持久化到磁盘


我在子上下文和类支持的实体中发现的一个重大问题是,请注意,您可能需要处理其他复杂性。

在复选框上单击“仅限更新核心数据”。然后我有一些代理和通知,它们执行其他流程。我不想触发复选框的操作来更新coredata。您可以将复选框与绑定分离,并通过自己的数据源(例如数组)通知它。然后,当需要保存时,对更改的值进行迭代。您可以隔离上下文,绑定到A,让B观察A,然后在保存A时,您将收到包含B上更改的通知,然后将其合并。我可以提供代码。。。当然,在保存上下文之前,不会发生对磁盘的更改。。。