【问题标题】:Add an obsrver to an NSArrayController将观察者添加到 NSArrayController
【发布时间】:2017-06-28 01:02:37
【问题描述】:

我想为我的 NSArraycontroller 创建一个 addObserver。 这个想法是,如果来自 Core Data 的记录(绑定到 NSArrayController)发生更改,则记录将保存到 sqlite 数据库中。 NSArraycontroller 绑定到 NSTableView。

【问题讨论】:

    标签: core-data nsarraycontroller addobserver


    【解决方案1】:

    非常感谢哈尔·穆勒。

    通过:

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

    现在我可以走得更远了。

    【讨论】:

      【解决方案2】:

      如果您在阵列控制器的托管对象上下文中注册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? 有一些很好的讨论。

      【讨论】:

      • 当任何对象发生变化时,您都会收到通知。
      • 我尝试在教程中添加以下站点,但没有做我想做的事。 cocoacasts.com/how-to-observe-a-managed-object-context 通知仅在执行 de save 命令时发生。出了什么问题。我需要在编辑 NSTableView 中的文本字段时发生的 addObserver。
      • 非常感谢哈尔·穆勒。 Bij 打算:// MARK:- 文本字段。覆盖 func controlTextDidEndEditing(_ obj: Notification) { print("Notificatie: (obj)") }
      猜你喜欢
      • 1970-01-01
      • 2011-03-27
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多