swift - 在 OSX : class is not key value coding-compliant for the key {name of binding var} 中绑定(bind)

标签 swift xcode macos binding xib

我试图按照 B.A. Learning Swift 书(创建笔记应用程序)中的说明进行操作。 Paris & Co,但面临以下绑定(bind)问题。我主要练习 iOS 编程,所以绑定(bind)概念对我来说是新的。

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

  1. 创建 OSX Cocoa 应用程序(不使用 Storyboard,基于文档的应用程序,文档 扩展名“测试”,不要使用核心数据)
  2. 将“var text = NSAttributedString()”添加到 Document.swift
  3. 将 NSTextView 添加到 Document.xib
  4. 在 NSTextView 的绑定(bind)检查器中,将“属性字符串”设置为文件所有者“self.text”(模型键路径)

我看到带有“Xcode 无法解析输入的 key 路径”概念的感叹号 构建成功,但是当我运行时它说“2017-09-03 22:17:40.739643+0200 test3[6017:424072] [ valueForUndefinedKey:]: 此类不符合键值编码关键文本。”

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

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

提前致谢

最佳答案

您需要使用 @objc 属性声明 text 属性,以便通过像键值编码这样的动态调度访问它。

此外,因为您希望通过键值观察(对于绑定(bind))可以观察到对属性的修改,所以您需要告诉 Swift 始终动态调度它的修改。因此,您还需要在声明中使用 dynamic 修饰符:

@objc dynamic var text = NSAttributedString()

关于swift - 在 OSX : class is not key value coding-compliant for the key {name of binding var} 中绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46027620/

相关文章:

objective-c - 将 100 个 NSMutableArray 组合成一个可控对象

swift - Swift 中的装饰器

ios - Swift 4 相机 View ,为什么这会在 iPad 而不是 iPhone 上崩溃?

swift - Xcode 10 beta SnapKit 约束类型错误

swift - 不一致的 SceneKit 帧率

xcode - 暂停函数直到用户输入

iphone - iOS 旧代码版本即使在重新安装后仍保留在手机上

java - Mac OS X 中的哪些设置会影响 Java 中的 `Locale` 和 `Calendar`?

xcode - 使用 Localized.String 在 Xcode 4 中进行本地化

android 模拟器不在 iMac 中的蓝牙耳机上播放声音