Ich habe ein Problem, und ich konnte mit demselben Kampf niemanden im Internet finden, vielleicht ist es einfach zu albern.
Ich habe die folgende Klasse:
%Vor%Und in meinem Storyboard sehe ich genau so aus:
Das benutzerdefinierte Laufzeitattribut wurde von Xcode IBInspectable-Funktionalität generiert (was wirklich cool ist), aber wenn ich versuche, die App zu starten, bekomme ich den Fehler
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIXOColourPicker 0x7fa86877c420> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key moodValue.'
Ich bin auf Xcode 6 - Beta 6.
Irgendwelche Ideen?
Tut mir leid, wenn es eine dumme Frage ist, aber ich habe mich zwei Stunden lang mit dem Problem herumgeschlagen und ich habe keinen anderen Swift-Entwickler hier, um es sich anzusehen.
Prost
@IBInspectable
verwendet Kakaoobjekte und keine nativen Swift-Typen. Also muss alles, was nicht implizit in einen schnellen Typ umgewandelt werden kann, stattdessen ein Kakaoobjekt sein. Für Number
oder Bool
benötigen Sie NSNumber
. Für etwas wie Point
, Size
, Rect
usw. müssten Sie NSValue
verwenden. Für String
können Sie jedoch String
direkt verwenden. Sie müssen NSString
nicht verwenden.
Also, in Ihrem Fall müssen Sie NSNumber
anstelle von Int
verwenden. Ich würde auch NSNumber?
anstelle von NSNumber!
verwenden, falls der Wert nicht in Ihrem Storyboard / xib festgelegt ist.
Wie @JakeLin und @Echelon darauf hingewiesen haben, zeigt Xcode für int
like-Werte nur das Attribut im Informations-Inspektor an, wenn Sie es als Int?
deklarieren, aber dann stürzt es zur Laufzeit ab. Wenn Sie NSNumber?
verwenden, stürzt es nicht zur Laufzeit ab, aber das Attribut ist nicht mehr im Attribute Inspector verfügbar. Es wird nur in den benutzerdefinierten Laufzeitattributen angezeigt (dies scheint mir ein Fehler in Xcode zu sein).
Der Fehler selbst sagt uns, wie wir dieses Problem umgehen können:
IBInspectable [66994: 58722469] Fehler beim Festlegen von (moodValue) benutzerdefinierter inspected Eigenschaft auf (q25429792
Dies hängt von Ihrem Typ für moodValue
ab. Es scheint, dass das KVO-System den erforderlichen Typzwang nicht bewältigen kann; Es sucht nach einem moodValue
mit dem tatsächlichen Typ NSNumber
. Ändern
bis
%Vor% Dann sollte das moodValue.integerValue
ausgewählt werden, was Sie wollen.
Tags und Links ios xcode swift xcode-storyboard