Core data 将OBServer添加到NSArrayController

Core data 将OBServer添加到NSArrayController,core-data,nsarraycontroller,addobserver,Core Data,Nsarraycontroller,Addobserver,我想给我的NSArraycontroller添加一个观察者。 其思想是,如果核心数据(绑定到NSArrayController)中的记录发生更改,则记录get将保存到sqlite数据库。 NSArraycontroller绑定到NSTableView。如果您在阵列控制器的托管对象上下文上注册了NSManagedObjectContextObjectsIDChange通知,则当这些对象发生更改时,您将收到通知。通过为您的视图使用专用的子MOC,该MOC将捕获所有更改,然后您可以将MOC保存到其父M

我想给我的NSArraycontroller添加一个观察者。 其思想是,如果核心数据(绑定到NSArrayController)中的记录发生更改,则记录get将保存到sqlite数据库。
NSArraycontroller绑定到NSTableView。

如果您在阵列控制器的托管对象上下文上注册了
NSManagedObjectContextObjectsIDChange
通知,则当这些对象发生更改时,您将收到通知。通过为您的视图使用专用的子MOC,该MOC将捕获所有更改,然后您可以将MOC保存到其父MOC

如果需要基于用户编辑的通知,请使用tableview,而不是阵列控制器。如果您仍然使用基于单元格的TabLVIEW,请考虑重写一种(不推荐的)方法,如-TeXdiDeDeDeId:p> 对于基于视图的表视图,请查看NSControl的各种委托,例如nscontrolexteditingdelegate上的-control:textshouldenediting:。在tableview委托上实现它们,当然也要使tableview委托成为表中每个控件的委托(这可能已经发生了?请先检查)


有一些很好的讨论。

非常感谢哈尔·穆勒

通过以下方式:

// MARK: - Textfield.
    override func controlTextDidEndEditing(_ obj: Notification) {
        print("Notificatie: \(obj)")
    }

现在我可以更进一步了。

当任何对象发生更改时,您都会收到通知。我尝试在教程中添加以下站点,但没有达到我想要的效果。通知仅在执行取消保存命令时发生。出了什么问题。我需要一个addObserver,在编辑NSTableView中的文本字段时发生。非常感谢Hal Mueller。Bij的目标是://MARK:-Textfield。重写func controltextdidediting(uj:Notification){print(“Notificatie:(obj)”)}