Macos 得到;valueForUndefinedKey:此类不符合密钥错误的密钥值编码;使用NSArrayController时

Macos 得到;valueForUndefinedKey:此类不符合密钥错误的密钥值编码;使用NSArrayController时,macos,swift,nsarraycontroller,nsstoryboard,Macos,Swift,Nsarraycontroller,Nsstoryboard,我正在使用Swift为NSCollectionView工作。当我使用NSArrayController对象作为NSCollectionView的内容时。我得到以下错误: 引发了一个未捕获的异常 [valueForUndefinedKey:]:此类不符合key-plugName的键值编码 我不知道为什么。我创建了一个名为NHPlug的模型和一个NSArrayController,如下所示,这是我的代码: /* Class NHAppController */ import Cocoa class

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

引发了一个未捕获的异常

[valueForUndefinedKey:]:此类不符合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]引发了未捕获的异常2015-01-21 19:47:07.347 Notifyhub[58369:598950] [valueForUndefinedKey:]:此类 密钥plugName不符合键值编码。2015-01-21 19:47:07.348 Notifyhub[58369:598950](0 CoreFoundation
0x00007fff9220b64c例外预处理+172 1 libobjc.A.dylib
0x00007fff950966de objc_异常_抛出+43 2 CoreFoundation
0x00007fff9220b1e9-[N异常提升]+9 3基础
0x00007fff8bd6c5ed-[NSObject(NSKeyValueCoding)的未定义键的值:] + 226 4基金会0x000 7FFF8BC89E68 - [NSbObjs](NSKEY ValueCudid)ValueFoiKy:+ 385 385基金会0x000 324 6基金会0x00 00 7FFF8BCA28 -[NSObject(NSKeyValueCoding)valueForKeyPath:+272 7应用套件0x00007fff8975c8bf-[NSBinder 绑定值:ResolveMarkersTopPlaceHolders:+164 8应用套件
0x00007fff89760700-[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] +302 9应用套件0x00007fff8976053b-[NSValueBinder _observeValueForKeyPath:of对象:context:+276 10应用套件0x00007fff897603ab [NSTExtValueBuffer-OnValuePraceEv.KEYPATH:OFObj:上下文:+ 43 11基金会0x00 00 7FFF8BC63C33 NSKeyValueNotifyObserver+382 12基础
0x00007fff8bc62e48 NSKeyValueDidChange+463 13基础
0x00007fff8bc679ad-[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:+118 14应用套件
0x00007fff89eb5e83-[NSCollectionView newItemForRepresentedObject:]+ 87 15应用套件0x00007fff89ebce03 -[NSCollectionView\u getItemsToDisplay]+1168 16应用套件0x00007fff89eb5595-[NSCollectionView设置内容:+217 17应用套件
0x00007fff89e8e965-[NSCollectionViewBinder\u updateContent]+93 18 应用套件0x00007fff89e8e9f0 [NScReaveVIExBiffer-ObjyTraceEffe:KEYPATH:OFObj:上下文:+ 84 19基金会0x00 00 7FFF8BC63C33 NSKeyValueNotifyObserver+382 20基金会
0x00007fff8bca22a6-[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath:change:+1142 21应用工具包0x00007fff897533ba-[NSController\U notifyObserversForKeyPath:change:] +206 22应用套件0x00007fff8984f126-[NSArrayController didChangeValuesForArrangedKeys:objectKeys:indexKeys:+54 23应用套件 0x00007fff89a1dbd0-[NSArrayController _insertObject:atArrangedObjectIndex:objectHandler:+514 24 AppKit 0x00007fff89a1d82c-[NSArrayController添加对象:+153 25 Notifyhub 0x000000010000166a _TFC9Notifyhub15NHAppController12awakeFromNibfS0\u FT\u T\u+362 26 Notifyhub 0x00000001000016d2 _TTOFC9通知HUB15NHAPPController12从NIBFS0_FT_T_+34 27 CoreFoundation 0x00007fff9211983f-[NSSet]唤醒 makeObjectsPerformSelector:+223 28应用工具包
0x00007fff89ba2ffd-[NSIBObjectData NibInstanceWithOwner:选项:topLevelObjects:+1216 29 AppKit
0x00007fff89c22122-[NSNib _实例化EnibWithExternalNameTable:options:+677 30应用套件0x00007fff89c22236-[NSNib _实例化所有者:选项:topLevelObjects:+143 31 AppKit 0x00007fff89d5f36c-[NSStoryboard InstanceControllerWithiIdentifier:+181 32 AppKit
0x00007fff896afef4 NSApplicationMain+840 33 Notifyhub
0x00000001000011c2顶级代码+34 Notifyhub
0x00000001000011fa干管+42 35 libdyld.dyli


我自己得到了答案。发到这里来帮助斯威夫特的任何可怜的新人

在Swift中,KVO不再是默认支持,当您声明变量时,必须设置“动态”,如下所示:

dynamic var plugID : Int
dynamic var plugName : String

我自己得到了答案。发到这里来帮助斯威夫特的任何可怜的新人

在Swift中,KVO不再是默认支持,当您声明变量时,必须设置“动态”,如下所示:

dynamic var plugID : Int
dynamic var plugName : String

您在哪里找到此文档?您在哪里找到此文档