ios - unknown - Xcode 6 Bug: Unbekannte Klasse in der Interface Builder Datei




xcode interface builder (20)

Ich habe auf Xcode 6 Beta 4 aktualisiert und jetzt stürzt meine App kontinuierlich mit der Nachricht ab

Unbekannte Klasse X in der Interface Builder-Datei.

Es stürzt ab, weil Xcode meine benutzerdefinierten Klassen, die ich in meinem Storyboard verlinkt habe, nicht finden kann, aber es zeigt, dass sie in der Xcode-Schnittstelle korrekt verknüpft sind.

Ich bin mir sicher, dass alles richtig verknüpft ist. Meine einzige andere Möglichkeit könnte sein, die gesamte Storyboard-Datei zu löschen und von vorne anzufangen, weil sie irgendwie beschädigt sein könnte.

Edit: Ich möchte auch hinzufügen, dass ich versucht habe, zu reinigen, Simulator zurücksetzen, mit Build-Phasen zu stören usw. Nichts davon funktioniert.


Überprüfen Sie, ob Ihre Klasse die richtige Zielmitgliedschaft hat .


Das hat für mich funktioniert.

Überprüfen Sie Ihre kompilierte Quelle, ob diese Datei (zB; ViewController.m) hinzugefügt wurde oder nicht, in meinem Fall wurde die ViewController-Datei nicht hinzugefügt, daher gab sie mir den Fehler.


Dies kann in jedem Xcode über 6.0 passieren. Es ist mir passiert, nachdem ich einige ViewController-Klassen im Swift-Projekt umbenannt habe (aber ich denke, dass es auch mit Obj-C passieren wird). Sie müssen nur den Interface Builder öffnen, zum Identity Inspector von ViewController gehen, dessen Klasse umbenannt wurde, Klasse auswählen und Enter drücken. Dadurch wird die umbenannte Klasse dem ausgewählten ViewController zugewiesen und der Modulwert zurückgesetzt, der nach dem Umbenennen der Klasse verloren geht.

Update für Xcode 8.1 (wahrscheinlich auch 8.0):

Xcode 8.1 stürzt einfach ab. Einfach und ärgerlich stürzt nur ab und druckt nichts. Ich habe diesen Phantom-Crash für eine Stunde verfolgt, nur um herauszufinden, dass es genau diese Sache war - nicht zugewiesene Klasse in IB. Wenn Sie Phantom-Abstürze bekommen, überprüfen Sie IB zuerst auf nicht zugewiesene Klassen.


Diese Schritte funktionieren für mich.

1) Abgeleitete Daten löschen.
2) Entfernen Sie die Dateien .h und .m
3) Erstelle .h und .m Dateien erneut


Durch die Auswahl des richtigen Module für meine Custom Class ich dieses Problem gelöst.

Hier ist es :


Ich habe überall dafür gegoogelt. Keine der Antworten funktionierte für mich, bis ich einen Typen traf, der mich bat, meinen Projektordner auf den Desktop zu verschieben. Es hat einfach automatisch funktioniert. Anscheinend, wenn Sie Ihren Projektordner zu tief in vielen Ordnern haben, bricht XCODE tatsächlich.


Ich habe dieses Problem gelöst, als ich die Frage eintippte. Ich dachte mir, ich würde meine Frage beantworten und sie hier für alle anderen, die dieses Problem bei der Verwendung von Xcode 6 beta 4 haben könnten, hinterlassen.

Um dieses Problem zu beheben, müssen Sie jedes benutzerdefinierte Klassenobjekt im Storyboard auswählen (dies schließt alle benutzerdefinierten Ansichten ein, sogar die benutzerdefinierten Ansichtscontroller selbst).

Wenn diese Objekte ausgewählt sind, öffnen Sie den Identity Inspector und unter "Custom Class" sollten Sie die Option Module sehen. Klicken Sie in das Textfeld "Module" und drücken Sie die Eingabetaste.

Das ist es! Das aktuelle Modul für alle meine benutzerdefinierten Objekte muss intern irgendwie falsch in Xcode 6 Beta 4 gesetzt worden sein. Aber es gab keine visuelle Anzeige davon im Inspektor.

Beachten Sie, dass wenn Sie die Eingabetaste drücken, das Modul-Textfeld nicht funktioniert, versuchen Sie, den Pfeil rechts auszuwählen, und wählen Sie Ihr aktuelles Modul manuell aus. Löschen Sie dann das Textfeld und drücken Sie die Eingabetaste. Sie können auch versuchen, die Eingabetaste innerhalb des Klassen-Textfelds zu drücken (obwohl dies normalerweise ein anderes Problem lösen soll).

Hier ist ein Bild, um die Dinge klarer zu machen:


Ich hatte das gleiche Problem mit Xcode Version 6.1 (6A1052d). Ich denke, das Problem tritt auf, wenn Sie Ihr App / Xcode-Projekt umbenannt haben.

Meine Lösung bestand darin, den Modulnamen im Interface Builder manuell hinzuzufügen.


Ich hatte dieses Problem, nachdem ich ein neues Ziel hinzugefügt und dann eine neue Klasse mit dem Dialog 'Neue Datei' erstellt hatte, aber versehentlich das neue Ziel sowie das ursprüngliche Ziel im Erstellungsdialog nicht überprüft, sodass das Objekt nur zu meinem hinzugefügt wurde ursprüngliches Ziel Die Lösung bestand darin, die Quelldateien zu löschen (nur Verweis entfernen) und dann mit "Dateien hinzufügen" wieder hinzuzufügen, wobei diesmal beide Ziele überprüft wurden.


Ich hatte dieses Problem, nachdem ich eine schnelle Klasse umbenannt hatte. Es wurde mit der @objc-Direktive gelöst:

@objc(ForumTopicListViewController) class ForumTopicListViewController

Ich löste dies, indem ich meine Storyboard-Datei als Quellcode öffne und mit Befehl-F nach meiner unbekannten Klasse suche und die damit verknüpfte benutzerdefinierte Klasse lösche.


Ich löste dieses Problem, indem ich den Modulnamen (die Drop-Liste wird nichts anzeigen ...) in der benutzerdefinierten Klasse des Identity Inspectors für alle View-Controller und Ansichten eingab.

Möglicherweise müssen Sie auch den Zielanbieter angeben. Um dieses Ziel zu erreichen, können Sie das Storyboard im Quellcode-Modus öffnen und das Attribut "customModuleProvider" sowohl in ViewController als auch in View eckigen Klammern hinzufügen.


In Xcode 8 stand ich vor diesem Problem. Um es zu lösen, musste ich das Storyboard im Texteditor modifizieren.

Im Allgemeinen sollten Sie nach Ihrem Steuerelement suchen und customModule und customModuleProvider aus der Steuerelementeinheit entfernen.

Hat einen Trick für mich gemacht.


In meinem Fall habe ich ein Flag -ObjC zu den Other Linker Flags in den Projekteinstellungen hinzugefügt, damit es funktioniert. Ich habe auch versucht mit -all_load Flag und es hat auch gut funktioniert.


Manchmal verliert der von Ihnen bereitgestellte Controller seine Zielmitgliedschaft aus der aktuellen Anwendung. In diesem Fall wird durch Drücken der Eingabetaste im Feld "Module" nichts unternommen. Gehen Sie zum Controller und stellen Sie sicher, dass die Zielmitgliedschaft auf die aktuelle App gesetzt ist.


Manchmal verpasst Xcode customModule="AppName" customModuleProvider="target"

Um es zu beheben, öffne das Storyboard als Quellcode und ersetze diese Zeile:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

zu diesem:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

Meine Lösung (Xcode 8.1 Swift 3.0):

Unbekannte Klasse xxx in der Interface Builder-Datei.

Öffne StoryBoard als Quellcode und suche nach xxx . Entfernen Sie das Attribut, das den Wert xxx enthält. Erstellen und Ausführen.


Meine Lösung bestand darin, @objc aus der benutzerdefinierten Klassendefinition zu entfernen.


Was @gfrs gesagt hat, ist richtig, Sie müssen das Modul einstellen. Allerdings habe ich einmal auf ein Problem gestoßen, dass meine Klasse nicht im Class Dropdown aufgelistet war. Schließlich habe ich die Swift-Datei entfernt, Xcode neu gestartet und die Datei neu erstellt. Schließlich wurde die Klasse aufgelistet und könnte im Storyboard verwendet werden.

Werfen Sie auch einen Blick auf diese Antwort , die das "echte" Problem zu lösen scheint.


Was nur für mich funktionierte, ist das Hinzufügen des Modulnamens zur XIB-Datei ...

Sooo, die Xib-Dateien sehen so aus:

mymodule.MyViewController.xib (Module being the name of the proyect, usually)

Schreckliche Lösung meiner Meinung nach, aber das ist angeblich, wie Apple will, dass wir es jetzt tun.

Diese Frage zeigt 3 mögliche Arbeitsumgebungen zurück in der Beta 4 ... anscheinend war Apple in dieser Situation nach einigen nicht sehr hilfreich, weil sie es "Arbeiten wie beabsichtigt" nennen.





uistoryboard