Swift - Weird coding-compliant Fehler

7

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

    
Marcos Duarte 21.08.2014, 15:05
quelle

2 Antworten

13

@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.

%Vor%

Aktualisieren

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

Mike S 21.08.2014, 15:35
quelle
6

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

%Vor%

bis

%Vor%

Dann sollte das moodValue.integerValue ausgewählt werden, was Sie wollen.

    
Adam Wright 21.08.2014 15:31
quelle

Tags und Links