Получил "valueForUndefinedKey: этот класс не совместим со значением ключа для кодовой ошибки" при использовании NSArrayController
Я работаю на NSCollectionView с помощью Swift. Когда я использую объект NSArrayController в качестве содержимого NSCollectionView. Я получил сообщение об ошибке:
Невостребованное исключение было поднято
[ valueForUndefinedKey:]: этот класс не совместим со значением ключа для 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 __exceptionPreprocess + 172 1 libobjc.A.dylib
0x00007fff950966de objc_exception_throw + 43 2 CoreFoundation
0x00007fff9220b1e9 - [Повышение NSException] + 9 3 Foundation
0x00007fff8bd6c5ed - [NSObject (NSKeyValueCoding) valueForUndefinedKey:] + 226 4 Фонд 0x00007fff8bc89e68 -[NSObject(NSKeyValueCoding) valueForKey:] + 385 5 Фонд 0x00007fff8bca28e3 -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 324 6 Фонд 0x00007fff8bca28af -[NSObject(NSKeyValueCoding) valueForKeyPath:] + 272 7 AppKit 0x00007fff8975c8bf -[NSBinder valueForBinding:resolMarkersToPlaceholders:] + 164 8 AppKit
0x00007fff89760700 - [NSValueBinder _adjustObject: Режим:observedController:observedKeyPath: контекст:editableState:adjustState:] + 302 9 AppKit 0x00007fff8976053b -[NSValueBinder _observeValueForKeyPath:ofObject: контекст:] + 276 10 AppKit 0x00007fff897603ab -[NSTextValueBinder _observeValueForKeyPath:ofObject: контекст:] + 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 - [NSCollectionView7Код
0x00007fff89e8e965 -[NSCollectionViewBinder _updateContent] + 93 18 AppKit 0x00007fff89e8e9f0 -[NSCollectionViewBinder _observeValueForKeyPath:ofObject:context:] + 84 19 Foundation 0x00007fff8bval0server 0
0x00007fff8bca22a6 -[NSObject(NSKeyValueObservingPrivate) _notifyObserversForKeyPath: изменение:] + 1142 21 AppKit 0x00007fff897533ba -[NSController _notifyObserversForKeyPath: изменение:] + 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: параметры: topLevelObjects:] + 1216 29 AppKit
0x00007fff89c22122 - [NSNib _instantiateNibWithExternalNameTable: параметры:] + + 677 30 AppKit 0x00007fff89c22236 -[NSNib _instantiateWithOwner: параметры:topLevelObjects:] + 143 31 AppKit 0x0000FB
0x00007fff896afef4 NSApplicationMain + 840 33 Notifyhub
0x00000001000011c2 top_level_code + 34 34 Notifyhub
0x00000001000011fa main + 42 35 libdyld.dyli
1 ответ
Получил ответ сам. Опубликовать здесь, чтобы помочь любому бедному новому парню для Свифта.
В Swift KVO больше не поддерживается по умолчанию, при объявлении переменной необходимо установить "динамический" следующим образом:
dynamic var plugID : Int
dynamic var plugName : String