gpt4 book ai didi

Cocoa 绑定(bind)(文件所有者与应用程序委托(delegate))

转载 作者:行者123 更新时间:2023-12-03 17:00:33 24 4
gpt4 key购买 nike

我刚刚开始使用 Cocoa Bindings,正在开发我的第一个应用程序。

许多示例和书籍都使用 NSArrayController,但由于我只想将单个对象及其属性绑定(bind)到某些文本字段,所以我使用了 NSObjectController。我也没有基于文档的应用程序。我的应用程序是一个简单的单窗口应用程序。

当我尝试像所有示例一样将我的 NSObjectController 绑定(bind)到文件所有者时,我开始遇到问题。如果我这样做,我将无法编译该应用程序。我总是收到“此类不符合键值规范”错误。
但是,如果我将 NSObjectController 绑定(bind)到应用程序的 AppController 实例,它就可以正常工作。我还设法将 Textfield 绑定(bind)到 NSObjectController 的字段。这也能正常工作。

但我不知道我做的是否正确。我发现的所有示例都绑定(bind)到文件所有者 - 这对我的应用程序不起作用。对于非基于文档的应用程序来说,绑定(bind)到应用程序 Controller 似乎是完美的方式。

最佳答案

当你绑定(bind)NSObjectControllercontentObject绑定(bind)时,你所做的就是告诉 Controller 如何找到你想要它编辑的对象。这是使用键值编码来完成的,其中使用字符串来导航潜在的许多对象关系以定位值。在运行时,对象 Controller 将使用您绑定(bind) Controller 的对象以及您在 Interface Builder 中指定的键路径来调用 [object valueForKeyPath:keyPath]

Interface Builder 中的文件所有者 socket 指的是加载 NIB 时指定为所有者的对象。在基于文档的应用程序中,这通常是一个 NSWindowController。在非文档应用程序中,文件的所有者通常是 NSApplication 实例。但是您没有(也不应该)子类化 NSApplication,因此在您的应用程序中,File's Owner 不是查找对象的正确位置。

相反,您很可能已将对象添加到应用程序委托(delegate)中,因此在非基于文档的应用程序中将对象 Controller 绑定(bind)到应用程序委托(delegate)是有意义的。作为建议,我会回到您之前完成的示例,看看您是否可以弄清楚这些对象 Controller 如何找到其内容对象。一旦您看到对象 Controller 与其控制的对象之间的连接,绑定(bind)对您来说应该更有意义。

关于Cocoa 绑定(bind)(文件所有者与应用程序委托(delegate)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com