macos - 使用 NSArrayController 时得到 "valueForUndefinedKey: this class is not key value coding-compliant for the key error"

标签 macos swift nsarraycontroller nsstoryboard

我正在使用 Swift 为 NSCollectionView 工作。当我使用 NSArrayController 对象作为 NSCollectionView 的内容时。我收到以下错误:

An uncaught exception was raised

[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key plugName .

我不知道为什么。我创建了一个名为 NHPlug 的模型和一个 NSArrayController,如下所示,这是我的代码。 :

/* Class NHAppController */
import Cocoa

class NHAppController: NSObject {
    @IBOutlet weak var arrayController: NSArrayController?

    var plugs: NSMutableArray?

    override func awakeFromNib() {
        var t = NHPlug(plugID: 1, plugName: "test")
        plugs = NSMutableArray()
        arrayController?.addObject(t)
    }
}

/* Class NSPlug */
import Cocoa

class NHPlug: NSObject {

    var plugID : Int
    var plugName : String

    init(plugID: Int, plugName: String) {
        self.plugID = plugID
        self.plugName = plugName;
    }

}

如果有人能提供帮助,非常感谢!

这里如果崩溃堆栈:

-01-21 19:47:07.347 Notifyhub[58369:598950] An uncaught exception was raised 2015-01-21 19:47:07.347 Notifyhub[58369:598950] [ valueForUndefinedKey:]: this class is not key value coding-compliant for the key plugName . 2015-01-21 19:47:07.348 Notifyhub[58369:598950] ( 0 CoreFoundation
0x00007fff9220b64c __exceptionPreprocess + 172 1 libobjc.A.dylib
0x00007fff950966de objc_exception_throw + 43 2 CoreFoundation
0x00007fff9220b1e9 -[NSException raise] + 9 3 Foundation
0x00007fff8bd6c5ed -[NSObject(NSKeyValueCoding) valueForUndefinedKey:] + 226 4 Foundation 0x00007fff8bc89e68 -[NSObject(NSKeyValueCoding) valueForKey:] + 385 5 Foundation 0x00007fff8bca28e3 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 324 6 Foundation 0x00007fff8bca28af -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 272 7 AppKit 0x00007fff8975c8bf -[NSBinder valueForBinding:resolveMarkersToPlaceholders:] + 164 8 AppKit
0x00007fff89760700 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 302 9 AppKit 0x00007fff8976053b -[NSValueBinder _observeValueForKeyPath:ofObject:context:] + 276 10 AppKit 0x00007fff897603ab -[NSTextValueBinder _observeValueForKeyPath:ofObject:context:] + 43 11 Foundation 0x00007fff8bc63c73 NSKeyValueNotifyObserver + 382 12 Foundation
0x00007fff8bc62e48 NSKeyValueDidChange + 463 13 Foundation
0x00007fff8bc679ad -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:] + 118 14 AppKit
0x00007fff89eb5e83 -[NSCollectionView newItemForRepresentedObject:] + 87 15 AppKit 0x00007fff89ebce03 -[NSCollectionView _getItemsToDisplay] + 1168 16 AppKit 0x00007fff89eb5595 -[NSCollectionView setContent:] + 217 17 AppKit
0x00007fff89e8e965 -[NSCollectionViewBinder _updateContent] + 93 18 AppKit 0x00007fff89e8e9f0 -[NSCollectionViewBinder _observeValueForKeyPath:ofObject:context:] + 84 19 Foundation 0x00007fff8bc63c73 NSKeyValueNotifyObserver + 382 20 Foundation
0x00007fff8bca22a6 -[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath:change:] + 1142 21 AppKit 0x00007fff897533ba -[NSController _notifyObserversForKeyPath:change:] + 206 22 AppKit 0x00007fff8984f126 -[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:] + 54 23 AppKit 0x00007fff89a1dbd0 -[NSArrayController _insertObject:atArrangedObjectIndex:objectHandler:] + 514 24 AppKit 0x00007fff89a1d82c -[NSArrayController addObject:] + 153 25 Notifyhub 0x000000010000166a _TFC9Notifyhub15NHAppController12awakeFromNibfS0_FT_T_ + 362 26 Notifyhub 0x00000001000016d2 _TToFC9Notifyhub15NHAppController12awakeFromNibfS0_FT_T_ + 34 27 CoreFoundation 0x00007fff9211983f -[NSSet makeObjectsPerformSelector:] + 223 28 AppKit
0x00007fff89ba2ffd -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1216 29 AppKit
0x00007fff89c22122 -[NSNib _instantiateNibWithExternalNameTable:options:] + 677 30 AppKit 0x00007fff89c22236 -[NSNib _instantiateWithOwner:options:topLevelObjects:] + 143 31 AppKit 0x00007fff89d5f36c -[NSStoryboard instantiateControllerWithIdentifier:] + 181 32 AppKit
0x00007fff896afef4 NSApplicationMain + 840 33 Notifyhub
0x00000001000011c2 top_level_code + 34 34 Notifyhub
0x00000001000011fa main + 42 35 libdyld.dyli

最佳答案

我自己得到了答案。在此处发帖以帮助任何可怜的 Swift 新手。

在 Swift 中,KVO 不再默认支持,当你声明一个变量时,必须设置“dynamic”,如下所示:

dynamic var plugID : Int
dynamic var plugName : String

关于macos - 使用 NSArrayController 时得到 "valueForUndefinedKey: this class is not key value coding-compliant for the key error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28066947/

相关文章:

macos - 安装后无法导入lightgbm

swift - 从父类(super class)调用所有子类的函数

swift - 无法构建 Objective-C 模块 'Firebase'//FirebaseAnalytics.h 未找到

swift - 如何快速迭代 NSArrayController 内容?

interface-builder - 使用 NSArrayController 添加对象时使 NSTableView 行可编辑

bash - 确保docker daemon在脚本文件中的主机上运行

macos - 随着时间的推移,我的 OS X 应用程序慢慢消耗越来越多的内存,我该如何调试并找到原因?

javascript - 修改此node.js代码以输出.wav而不是.mp4?

swift - SpriteKit 中的水平滚动(相对于 View Controller )

cocoa - 具有多个属性的模型关键路径