【发布时间】:2017-06-28 01:02:37
【问题描述】:
我想为我的 NSArraycontroller 创建一个 addObserver。 这个想法是,如果来自 Core Data 的记录(绑定到 NSArrayController)发生更改,则记录将保存到 sqlite 数据库中。 NSArraycontroller 绑定到 NSTableView。
【问题讨论】:
标签: core-data nsarraycontroller addobserver
我想为我的 NSArraycontroller 创建一个 addObserver。 这个想法是,如果来自 Core Data 的记录(绑定到 NSArrayController)发生更改,则记录将保存到 sqlite 数据库中。 NSArraycontroller 绑定到 NSTableView。
【问题讨论】:
标签: core-data nsarraycontroller addobserver
非常感谢哈尔·穆勒。
通过:
// MARK: - Textfield.
override func controlTextDidEndEditing(_ obj: Notification) {
print("Notificatie: \(obj)")
}
现在我可以走得更远了。
【讨论】:
如果您在阵列控制器的托管对象上下文中注册NSManagedObjectContextObjectsDidChange 通知,您将在这些对象更改时收到通知。通过为您的视图使用专用的子 MOC,该 MOC 将捕获所有更改,然后您可以将您的 MOC 保存到其父 MOC。
如果您想要基于用户编辑的通知,请使用表格视图,而不是数组控制器。如果您仍在使用基于单元格的表格视图,请考虑覆盖(已弃用)方法之一,例如 -textDidEndEditing:。
对于基于视图的表格视图,请查看 NSControl 的各种委托,例如 -control:textShouldEndEditing: on NSControlTextEditingDelegate。在你的 tableview 委托上实现它们,当然也让 tableview 委托也成为你表中每个控件的委托(这可能已经发生了?先检查一下)。
How can I get notified when the user finishes editing a cell in an NSTableView? 有一些很好的讨论。
【讨论】: