【问题标题】:Observing model changes with Cocoa Bindings and NSArrayController使用 Cocoa Bindings 和 NSArrayController 观察模型变化
【发布时间】:2010-05-04 02:25:06
【问题描述】:

我有一个NSArrayController 绑定到我的控制器中的一个可变数组,它管理我的模型对象数组。数组控制器绑定到我的 UI。效果很好。

现在我正在尝试手动观察我的控制器类中我的模型中的值何时发生变化(基本上我将更改后的模型标记为“needsToSave”以备后用,但我还有一些其他任务)变化)。

我已经阅读了 KVO,但我不完全确定我需要观察什么... NSArrayController?对象数组?每个模型对象本身?混乱。

任何指针都会非常有帮助。提前致谢!

【问题讨论】:

    标签: cocoa cocoa-bindings key-value-observing nsarraycontroller


    【解决方案1】:

    在您的模型项目添加和删除方法中,您应该开始和停止观察每个项目,以便了解发生的一切。这也将帮助您实现撤消。如果您需要示例代码,我知道 Hillegass 的书涵盖了它(至少第 2 版有,已经检查过第 3 版)。您还可以寻找实现撤消的示例代码以寻求帮助。

    【讨论】:

    • 所以在我的控制器中我会有类似的东西:-addNewObject { MyObj *obj = ...; [obj addObsever:self ...]; [myArrayController addObject:obj]; 这样吗?
    • 这基本上是正确的,您确实需要开始观察您要使用的每个关键路径addObserver:self forKeyPath:aKeyPath options:NSKeyValueObservingOptionOld context:NULL。由于您可能需要观察多个关键路径,因此您可能希望创建开始和停止观察方法。不要忘记您是否拥有(并且应该)一个 setArray: 方法来逐个枚举所有项目,以停止观察旧的数组项目并从新的项目开始。顺便说一句,如果您是基于文档的,则可以检查文档是否脏以保存在“needsToSave”部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多