在OSX中绑定:类不是密钥值编码兼容的密钥{绑定名称}

时间:2017-09-03 20:36:39

标签: swift xcode macos binding xib

我试图遵循B.A.的学习Swift书(创建笔记应用程序)的说明。巴黎& Co,但面临以下绑定问题。我主要是在练习iOS编程,所以绑定概念对我来说是新的。

我做的步骤(尝试了xcode 9 beta 5和8.3.3):

  1. 创建OSX Cocoa应用程序(不使用故事板,基于文档的应用程序 - 文档 扩展“测试”,不要使用核心数据)
  2. 将“var text = NSAttributedString()”添加到Document.swift
  3. 将NSTextView添加到Document.xib
  4. 在NSTextView的Bindings检查器中将“属性字符串”设置为文件所有者“self.text”(模型密钥路径)
  5. 我看到带有“Xcode无法解析输入的密钥路径”概念的感叹号 构建成功,但是当我运行它时说“2017-09-03 22:17:40.739643 + 0200 test3 [6017:424072] [< test3.Document 0x6180000c3410> valueForUndefinedKey:]:此类不是键值文本的键值编码。“

    我试图控制从Xib到Swift的拖动,它警告“Xcode无法在当前工作空间中找到类Document”。

    我试图转换为工作区而不是proj,检查文件所有者,检查与错误相关的stackoverflow线程 - 但他们主要关注的是错误或非实际连接所造成的某些连接(我可以删除连接,我知道什么连接是错的,问题是如何使它正确)。到目前为止找不到解决方案。

    提前致谢

1 个答案:

答案 0 :(得分:10)

您需要使用text属性声明@objc属性,以便通过动态调度(如键值编码)访问该属性。

另外,因为您希望通过Key-Value Observing(对于Bindings)可以观察属性的修改,所以您需要告诉Swift始终动态地调度它的修改。因此,您还需要在声明中使用dynamic修饰符:

@objc dynamic var text = NSAttributedString()