swift - 如何在文档子类中使用带有键的 cocoa 绑定(bind)?

标签 swift macos cocoa-bindings

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

enter image description here

这是在我的 NSDocument 子类 NECDocument 中。我的 NECDocumentVCNSViewController 的子类,并且有一个指向 NECDocument 的链接,因此我可以从 VC 访问这些变量:

enter image description here

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

我是这样使用的:

enter image description here

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

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

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

更新:

我在我的 DocumentVC 中添加了一个 Referencing Outlet,然后在 viewDidAppear 中添加了 SettingsController?.addObject(document!)。现在运行该应用程序会产生:

2016-03-03 14:28:05.880 SwiftNEC[73373:6282035] 无法为来自 的关键路径“document.usegreens”的观察者更新,很可能是因为关键“document”的值已更改而没有适当的正在发送 KVO 通知。检查 SwiftNEC.NECDocumentVC 类的 KVO 合规性。

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

最佳答案

您正在以非 KVO 方式更改 vc 的文档属性。 不是绑定(bind)对象 Controller 的内容,而是在 viewDidLoadviewWillAppear 中执行 SettingsController?.content = document!

关于swift - 如何在文档子类中使用带有键的 cocoa 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35754604/

相关文章:

objective-c - NSPopUpButton + 绑定(bind) + 显示所有选项

arrays - 获取单个核心数据元素并组合成单个数组

ios - 为什么清空 NavigationStack 路径后对象仍在内存中?

java - 指定的 JRE 安装不存在 (MacOSX)

swift - Mac OS 更改绑定(bind)核心数据控件的值

cocoa - 如何将数组 Controller 的 'remove' 与集合运算符绑定(bind)为内容

swift - Xcode 9 - 无法加载从 Nib 引用的 “sampleImage” 图像

ios - 如何以编程方式更改 UIImageView 的高度?

macos - 用于分发到 Mac 的 DMG 或 Zip 文件?

macos - 目标文件未正确添加到 mac 上的存档