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

67voto

erkanyildiz Punkte 12832

Wenn es sich um eine iPhone-App handelt und nicht eine universelle, stellen Sie sicher, dass das folgende Feld leer ist:

Ziele > Zusammenfassung > iPhone/iPod-Bereitstellungsinformationen > Hauptbenutzeroberfläche

Wenn Sie dort eine XIB angeben, stürzt es ab.

62voto

Tibidabo Punkte 21133

Dieser Fehler zeigt an, dass ein bereits verbundenes Interface Builder Objekt entfernt/umbenannt wurde. in der Quelle seines Besitzers (File's Owner).

Klicken Sie mit der rechten Maustaste auf den Files's Owner im Interface Builder, wenn Sie ein Ausrufezeichen sehen, müssen Sie das beheben.

Im Bild unten sehen Sie, dass "aRemovedView" ein Ausrufezeichen rechts davon hat, das liegt daran, dass ich das IBOutlet view Objekt entfernt habe, während es bereits im IB verbunden war.

Bildbeschreibung hier eingeben

Dies führt zu folgendem Fehler: Beenden der App aufgrund einer unbehandelten Ausnahme 'NSUnknownKeyException', Grund: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key aRemovedView.'

44voto

Eric Brotto Punkte 51451

Ich hatte das gleiche Problem und obwohl die Antwort von TechZen wirklich erstaunlich sein könnte, fand ich es schwer, sie auf meine Situation anzuwenden.

Schließlich löste ich das Problem, indem ich das Label über den im Bild unten hervorgehobenen Controller verknüpfte, anstatt über den Dateieigentümer.

Hoffentlich hilft das.

Bildbeschreibung hier eingeben

40voto

Fareed Alnamrouti Punkte 28431

In meinem Fall war es ein Fehler im Storyboard-Quellcode, befolgen Sie diese Schritte:

  1. Öffnen Sie zunächst Ihr Storyboard als Quellcode
  2. Suchen Sie nach
  3. Entfernen Sie unerwünschte Verbindungen

Zum Beispiel:

Wie Sie sehen, handelt es sich hierbei um Verbindungen zwischen den Namen Ihrer Code-Variablen und den Storyboard-Layout-XML-Tags ;)

34voto

ashack Punkte 1162

Geben Sie hier eine Bildbeschreibung ein Geben Sie hier eine Bildbeschreibung ein

Meine Lösung war ähnlich wie die von Gerard Grundy. Beim Erstellen einer benutzerdefinierten UITableViewCell mit einem XIB hatte ich fälschlicherweise den Klassennamen auf den File's Owner anstatt auf die UITableViewCell angewendet. Indem ich die Klasse auf die UITableViewCell auf der Zeichenfläche anwandte und meine IBOutlet-Eigenschaften damit verbunden habe, wurde das Problem gelöst.

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