如何在文档子类中使用 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 的文档 属性。
不要绑定对象控制器的内容,而是在 viewDidLoad
或 viewWillAppear
.
中执行 SettingsController?.content = document!
这是我的 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 的文档 属性。
不要绑定对象控制器的内容,而是在 viewDidLoad
或 viewWillAppear
.
SettingsController?.content = document!