1279 Stimmen

Xcode - Wie behebt man den 'NSUnknownKeyException'-Fehler? Grund: ... Diese Klasse ist nicht schlüsselwertcodierfähig für den Schlüssel X"?

Ich versuche, ein UILabel mit einem IBOutlet zu verknüpfen, das in meiner Klasse erstellt wurde.

Meine Anwendung stürzt mit folgendem Fehler ab.

Was bedeutet das?

Wie kann ich das beheben?

*** App-Beendigung aufgrund von unbehandelter Ausnahme 'NSUnknownKeyException', Grund: '[ setValue:forUndefinedKey:]: Diese Klasse ist nicht schlüsselwertcodierfähig für den Schlüssel XXX.'

0voto

Ahmed Elashker Punkte 961

Achten Sie einfach darauf, wenn Sie versuchen, einen Wert zu beobachten, der nicht existiert.

Dies ist mir passiert, als ich einfach die "Text"-Eigenschaft eines Textfelds beobachtet habe, als ich eigentlich die Eigenschaft "text" beobachten sollte.

0voto

Edison Punkte 11347

Hast du dein Picker-Objekt nicht verbunden?

lol 54 Antworten und keine davon ist meine Lösung. Das ist wirklich ein häufiger Fehler.

In meinem Fall lag es daran, dass ich ein Picker-Objekt auf meinem VC hatte und dafür keinen Outlet und keine Aktion festgelegt hatte.

Ich lasse oft Schaltflächen usw. unverbunden, wenn ich nur sehen möchte, wie das Layout aussieht. Aber anscheinend kann man das nicht bei einem Picker machen.

0voto

Vladimir Borodko Punkte 163

Noch ein kniffliger Fall:

In IB wurde ein ViewController zum Storyboard hinzugefügt, dessen Ansicht gelöscht und die benutzerdefinierte Klasse auf "MyViewController" gesetzt, sodass die Ansicht aus MyViewController.xib instanziiert wird

Die Angabe der Storyboard-ID "MyViewController" führt zu einer Ausnahme

Das Ändern der Storyboard-ID auf einen anderen Namen löst das Problem.

0voto

clozach Punkte 4968

Normalerweise, wenn mir das passiert, funktioniert @TechZen's Antwort. Gestern habe ich jedoch eine peinlich lange Zeit damit verbracht, mit den Storyboard-Verbindungen herumzuspielen, nur um festzustellen, dass das Problem in meinem Code lag.

Ich habe einen benutzerdefinierten View Controller, der verschiedene Layouts in meinem Storyboard steuert, aber eines der Layouts benötigte ein spezielles Label, das von den anderen nicht verwendet wurde. Also habe ich eine Unterklasse erstellt wie folgt:

@interface MyViewControllerSubclass : MyViewController

Dann habe ich eine private Eigenschaft in MyViewControllerSubclass.m hinzugefügt:

@interface MyViewController ()
@property (weak, nonatomic) IBOutlet UILabel *crashesApp;
@end

Xcode hat mir problemlos erlaubt, dieses IBOutlet zu verbinden, aber jedes Mal, wenn die Ansicht geladen wurde, stürzte die App mit der alten Meldung "nicht schlüsselwertkonform für den Schlüssel 'chrashesApp'" ab.

Die Lösung, die im Nachhinein halb offensichtlich war, bestand darin, die private Kategorie so zu ändern, dass der richtige Name verwendet wird, nämlich der der Unterklasse:

@interface MyViewControllerSubclass ()
@property (weak, nonatomic) IBOutlet UILabel *noMoreCrashing;
@end

0voto

Rickster Punkte 840

Ich hatte dieses Problem auch. Ich hatte eine Ansicht mit einem IBOutlet von einer xib-Datei in eine andere xib-Datei kopiert. Und obwohl ich den alten Verweis entfernt und einen neuen Verweis erstellt hatte, trat dieser Fehler immer noch auf.

Letztendlich musste ich Xcode neu starten, um dieses Problem zu beheben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X