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

1voto

Abhi Punkte 149

Ich habe den gleichen Fehler bekommen, als ich manuell eine Ansicht aus einem Nib geladen habe. Es stellte sich heraus, dass ich vergessen hatte, den Besitzer der Ansicht zu setzen.

Zum Beispiel, wenn du eine Ansicht auf folgende Weise lädst,

let view = Bundle.main.loadNibNamed("MyNibFileName",
                                 owner: nil,
                                 options: nil)?.first as! UIView

und dann ein IBOutlet hinzufügst, kann das IBOutlet nicht referenziert werden und die Anwendung stürzt mit dem obigen Fehler ab.

Lösung: Weise einen Besitzer für die Ansicht zu.

let view = Bundle.main.loadNibNamed("MyNibFileName",
                                 owner: self,
                                 options: nil)?.first as! UIView

1voto

Artem Shmatkov Punkte 1436

Ein weiterer Grund für diese Situation ist, dass Sie diese Eigenschaft als @dynamic implementiert deklarieren, aber die Klasse sie nicht in der Elternklasse finden kann.

1voto

Chris Allinson Punkte 1787

Ich hatte das gleiche Problem, und die Ursache lag darin, dass ich ein Modul im Interface Builder angegeben hatte (anstatt es leer zu lassen). Wenn ich also ein anderes Modul als das von mir festgelegte verwendet habe, würde die App abstürzen :S ... hoffentlich hilft das auch jemand anderem, da mein Problem nicht auf ein defektes oder veraltetes Outlet zurückzuführen war!

1voto

user1760527 Punkte 1104

Ich hatte dieses Problem mit Storyboard und Swift-Klasse für UI-View-Controller. Ich habe es gelöst, indem ich die @objc-Direktive verwendet habe:

@objc(MyViewController) class MyViewController

1voto

Fonix Punkte 11001

Das ist mir passiert, als ich eine UIView in einem Storyboard verknüpft hatte und ein IBOutlet wie folgt verbunden habe:

@property (strong, nonatomic) IBOutlet UIView *someView

Später habe ich die UIView in eine benutzerdefinierte Klasse umgewandelt, aber vergessen, den Klassennamen dieses oben definierten IBOutlets zu ändern. Es handelt sich um einen seltsamen Fehler, weil wenn die benutzerdefinierte Ansicht keine Unternansichten hat, gibt es keinen Fehler, aber sobald Unternansichten vorhanden sind, wird der Fehler aus der Frage angezeigt, aber auf einer der Unternansichten und nicht auf der äußeren UIView, wo das eigentliche Problem liegt. Ich habe alle Unternansichten gelöscht und neu hinzugefügt, um das Problem zu finden, obwohl es tatsächlich nichts mit den Unternansichten zu tun hatte

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