如何在文档子类中使用 cocoa 键绑定?

How to use cocoa bindings with keys in your document subclass?

这是我的 Swift 应用程序中 freqstart 变量的定义:

这是在我的 NSDocument 子class、NECDocument 里面。我的 NECDocumentVC subclasses NSViewController 并且有一个 link 到 NECDocument,所以我可以从 VC:

请注意,这两个对象都是 NS* class 层次结构的一部分,因此一切都应该与 KVO 一起正常工作。

我是这样使用的:

问题是关键路径无效,从字段中的灰色!可以看出。为了好玩,我在我的 VC 中放置了相同的变量,很快,这个值就很好了。我在关键路径中尝试了一堆不同的语法,但我尝试过的都没有用。 document 有什么需要不同的地方吗?

我重新开始 - 我在情节提要中添加了一个 NSObjectController,将其 class 设置为 NECDocument 并将其绑定到 NECDocumentVC->self.document。然后我将文本字段绑定到指向 OC,现在它自动完成 "freqstart" 而没有 !。唯一的问题是现在它显示 "No selection",并且不清楚我将如何更改只读的选择。

我不想将我所有的变量都放在我的 VC 中,那根本不属于它们。那么有人可以建议解决这个问题的方法吗?

更新:

我在我的文档中添加了一个引用出口VC,然后在 viewDidAppear 中添加了 SettingsController?.addObject(document!)。现在 运行 该应用的结果是:

2016-03-03 14:28:05.880 SwiftNEC[73373:6282035] 无法为来自 的关键路径 "document.usegreens" 的观察者更新,很可能是因为密钥 "document" 已更改,但未发送适当的 KVO 通知。检查 SwiftNEC.NECDocumentVC class.

的 KVO 合规性

好的,那么是否可以使用像我用 KVO 定义的文档那样计算出来的属性?

您正在以非 KVO 方式更改 vc 的文档 属性。 不要绑定对象控制器的内容,而是在 viewDidLoadviewWillAppear.

中执行 SettingsController?.content = document!