Ich habe ein Upgrade auf Xcode 6 Beta 4 durchgeführt und jetzt stürzt meine App ständig mit der Nachricht ab
Unbekannte Klasse X in der Interface Builder-Datei.
Es stürzt ab, weil Xcode angeblich meine benutzerdefinierten Klassen, die ich in meinem Storyboard verknüpft habe, nicht finden kann, aber es zeigt, dass sie in der Xcode-Oberfläche korrekt verknüpft sind.
Ich bin mir sicher, dass alles richtig verknüpft ist. Meine einzige andere Möglichkeit besteht darin, die gesamte Storyboard-Datei zu löschen und von vorne zu beginnen, da sie möglicherweise irgendwie beschädigt ist.
Bearbeiten: Ich möchte auch hinzufügen, dass ich versucht habe zu reinigen, den Simulator zurückzusetzen, mit Build-Phasen herumzuspielen usw. Nichts davon funktioniert.
ios
xcode
xcode6
interface-builder
uistoryboard
Episches Byte
quelle
quelle
Antworten:
Ich habe dieses Problem behoben, als ich die Frage eingegeben habe. Ich dachte, ich würde meine Frage beantworten und sie hier allen anderen überlassen, die bei der Verwendung von Xcode 6 Beta 4 auf dieses Problem stoßen könnten.
Um dieses Problem zu beheben, müssen Sie jedes Ihrer benutzerdefinierten Klassenobjekte in Storyboard auswählen (dies schließt alle benutzerdefinierten Ansichten ein, auch die benutzerdefinierten Ansichtscontroller selbst).
Öffnen Sie dann mit diesen ausgewählten Objekten den Identitätsinspektor und unter "Benutzerdefinierte Klasse" sollte die Option Modul angezeigt werden. Klicken Sie in das Textfeld Modul und drücken Sie die Eingabetaste.
Das ist es! Das aktuelle Modul für alle meine benutzerdefinierten Objekte muss in Xcode 6 Beta 4 intern irgendwie falsch eingestellt worden sein. Im Inspektor gab es jedoch keinen visuellen Hinweis darauf.
Beachten Sie, dass wenn die Eingabetaste im Textfeld Modul nicht funktioniert, versuchen Sie, den Pfeil nach rechts auszuwählen und Ihr aktuelles Modul manuell auszuwählen. Deaktivieren Sie dann das Textfeld und drücken Sie die Eingabetaste. Sie können auch versuchen, die Eingabetaste im Klassentextfeld zu drücken (obwohl dies normalerweise dazu dient, ein anderes Problem zu beheben).
Hier ist ein Bild, um die Dinge klarer zu machen:
quelle
@objc(...)
eine meiner Swift-Klassen hinzugefügt hatte .Manchmal fehlte Xcode
customModule="AppName" customModuleProvider="target"
Um das Problem zu beheben, öffnen Sie das Storyboard als Quellcode und ersetzen Sie diese Zeile:
dazu:
quelle
customModuleProvider
, dann ging der Fehler weg.customModuleProvider
auch für mich getan, danke!Ich hatte dieses Problem, nachdem ich eine schnelle Klasse umbenannt hatte. Es wurde mithilfe der @ objc-Direktive gelöst:
quelle
@objc class X
und wechselte zu@objc(X) class X
arbeiten.@objc()
Direktive für die 'ursprüngliche' ViewController-Klasse nicht benötigt wurde ...Projekt mit mehreren Zielen
In meinem Fall arbeite ich an einem Projekt mit mehreren Zielen und das Problem "Von Ziel erben" wurde deaktiviert. Die Auswahl von "Vom Ziel erben" löste mein Problem
quelle
Das hat bei mir funktioniert ..
Überprüfen Sie Ihre kompilierte Quelle, ob diese Datei (z. B. ViewController.m) hinzugefügt wurde oder nicht. In meinem Fall wurde die ViewController-Datei nicht hinzugefügt, sodass mir der Fehler angezeigt wurde.
quelle
Compile Sources
. Dies ist wirklich die richtige (und einzige) Lösung für einige.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, es wird auch mit Obj-C passieren). Sie müssen nur den Interface Builder öffnen, zum Identitätsinspektor von ViewController gehen, dessen Klasse umbenannt wurde, Klasse auswählen und die Eingabetaste drücken. Dadurch wird die umbenannte Klasse dem ausgewählten ViewController neu 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 nervig stürzt einfach ab und druckt nichts. Ich habe diesen Phantomabsturz eine Stunde lang verfolgt, nur um herauszufinden, dass es genau dasselbe war - nicht zugewiesene Klasse in IB. Wenn es zu Phantomabstürzen kommt, überprüfen Sie IB zuerst auf nicht zugewiesene Klassen.
quelle
Manchmal verliert der von Ihnen bereitgestellte Controller seine Zielmitgliedschaft aus der aktuellen Anwendung. In diesem Fall führt das Drücken der Eingabetaste im Feld "Modul" zu nichts. Gehen Sie zum Controller und stellen Sie sicher, dass für die aktuelle App die Zielmitgliedschaft festgelegt ist.
quelle
Für die Aktivierung wurde
Inherit Module From Target
das richtige Zielmodul verwendet. Das hat das Problem gelöst.quelle
Meine Antwort: Setzen Sie das benutzerdefinierte Modul gleich dem benutzerdefinierten Pod-Namen (in meinem Beispiel - benutzerdefinierter Klassenname) wie im beigefügten Screenshot
Diese Lösung ist für einen bestimmten Fall vorgesehen : für benutzerdefinierte Ansichtsklassen aus Pod (oder Karthago) ) Framework.
Infrastruktur: XCode8, Swift3
quelle
Ich habe es behoben, indem ich genau das Gegenteil von dem getan habe, was ChikabuZ vorgeschlagen hat (danke, dass Sie darauf hingewiesen haben). Suchen Sie in der Storyboard-Datei Folgendes:
und ersetzen Sie es durch:
Ich kann nicht glauben, wie viele Stunden ich verliere, um Fehler im Swift-Compiler und in Xcode 6 zu umgehen
quelle
Durch Auswahl der richtigen Lösung
Module
habeCustom Class
ich dieses Problem gelöst.Hier ist es :
quelle
Ich hatte dieses Problem in Xcode 8 , um es zu beheben, musste ich das Storyboard im Texteditor ändern.
Im Allgemeinen sieht für Ihre Steuerung und entfernen
customModule
undcustomModuleProvider
von der Steuereinheit.Hat einen Trick für mich gemacht.
quelle
Ich hatte das gleiche Problem.
In meinem Fall hat Xcode meine benutzerdefinierte Klasse nicht hinzugefügt zu: Ziel> Erstellungsphase> Quellen kompilieren.
Ich empfehle Ihnen daher zu überprüfen, ob Ihre CustomClass.m vorhanden ist.
Ich hoffe das hilft dir.
quelle
Dieses Problem trat in Xcode 6.1 auf, als ich
Main.storyboard
dieLaunchScreen.xib
Datei und die StandardklassenViewController
aus meinem Projekt entfernte.Ich habe es behoben, indem ich die
Launch Screen File
undMain Interface
Einträge aus gelöscht habeInfo.plist
quelle
Überprüfen Sie, ob Ihre Klasse die richtige Zielmitgliedschaft hat .
quelle
Ich habe überall dafür gegoogelt. Keine der Antworten funktioniert für mich, bis ich einen Typen getroffen habe, der mich gebeten hat, meinen Projektordner auf den Desktop zu verschieben. Es hat einfach automatisch funktioniert. Anscheinend bricht XCODE tatsächlich ab, wenn Sie Ihren Projektordner zu tief in vielen Ordnern haben.
quelle
Diese Schritte funktionieren für mich.
1) Abgeleitete Daten löschen.
2) Entfernen Sie die Dateien .h und .m.
3) Erstellen Sie erneut die Dateien .h und .m
quelle
Ich habe dieses Problem gelöst, indem ich meine Storyboard-Datei als Quellcode geöffnet und mit Befehl-F nach meiner unbekannten Klasse gesucht und die damit verbundene benutzerdefinierte Klasse gelöscht habe.
quelle
Was @gfrs gesagt hat, ist richtig. Sie müssen das Modul einstellen. Ich bin jedoch einmal auf ein Problem gestoßen, bei dem meine Klasse nicht in der Liste aufgeführt war
Class
gestoßen Dropdown-Liste aufgeführt war. Schließlich entfernte ich die schnelle Datei, startete Xcode neu und erstellte die Datei neu. Schließlich wurde die Klasse aufgelistet und konnte im Storyboard verwendet werden.Schauen Sie sich auch diese Antwort an , die das "echte" Problem zu lösen scheint , auf das ich gestoßen bin.
quelle
Ich habe dieses Problem gelöst, indem ich den Modulnamen (in der Dropdown-Liste wird leider nichts angezeigt ...) in die benutzerdefinierte Klasse des Identitätsinspektors für alle View-Controller und -Ansichten eingegeben habe.
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-spitzen Klammern hinzufügen.
quelle
Meine Lösung (Xcode 8.1 Swift 3.0):
Unbekannte Klasse xxx in der Interface Builder-Datei.
Öffnen Sie StoryBoard als Quellcode und suchen Sie nach xxx . Entfernen Sie das Attribut, das den Wert xxx enthält . Erstellen und ausführen.
quelle
customModule="" customModuleProvider=""
In meinem Fall habe ich eine Flagge
-ObjC
zuOther Linker Flags
in Projekteinstellungen , damit es funktioniert. Auch ich habe es mit-all_load
Flagge versucht und es hat auch gut funktioniert.quelle
In meinem Fall die Klasse in der Storyboard / xib verwiesen hat kein Ziel Membership - Set.
Geben Sie diesen Klassen
.h
und.m
Dateien zur Behebung dieselbe Zielmitgliedschaft wie Ihren anderen Klassen.quelle
Meine Lösung bestand darin, @objc aus der benutzerdefinierten Klassendefinition zu entfernen.
quelle
Ich hatte das Problem, als ich das Storyboard vom Swift-Projekt zum Objective-c-Projekt portierte und dabei die Antwort von vvkuznetsov bemerkte . Es stellte sich heraus, dass beide Projekte denselben Bezeichner verwendeten. I "Produkt -> Reinigen" und tippen Sie im Textfeld Modul und Klasse auf die Eingabetaste. Das Problem ging weg.
quelle
Ich habe dies in Anlehnung an Laura behoben, aber ich musste die Dateien nicht neu erstellen.
Wählen Sie mit XCode 4 im Projektnavigator die .m-Datei aus, die die Klasse enthält, über die sie sich beschwert
Gehen Sie zu Ansicht-> Dienstprogramme-> Dateiinspektor anzeigen (hiermit wird rechts der Dateiinspektor mit den Informationen zur .m-Datei angezeigt.)
Öffnen Sie den Abschnitt Zielmitgliedschaft und stellen Sie sicher, dass Ihr Ziel für diese .m-Datei ausgewählt ist
Als ich meine .m-Datei zu meinem Projekt hinzufügte, wurde sie aus irgendeinem Grund nicht zu meinem Standardziel hinzugefügt, und dies führte dazu, dass ich den von Ihnen erwähnten Fehler erhielt.
quelle
Mein Problem war ein Benutzerfehler. Ich hatte ein generisches UIView in meinem Storyboard und im Abschnitt Benutzerdefinierte Klasse des Identitätsinspektors hatte ich versehentlich den Namen von UIView in Kauderwelsch geändert.
Um dies zu beheben, musste es nur wieder in UIView geändert werden.
quelle
Was nur für mich funktioniert hat, ist das Hinzufügen des Modulnamens zur xib-Datei ...
Sooo, die xib-Dateien sehen folgendermaßen aus:
HORRIBLE Lösung meiner Meinung nach, aber Apple will angeblich, dass wir das jetzt tun.
Diese Frage zeigt 3 mögliche Problemumgehungen in Beta 4 ... anscheinend war Apple in dieser Situation laut einigen nicht sehr hilfreich, weil sie es "Arbeiten wie beabsichtigt" nennen.
quelle
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 manuell im Interface Builder hinzuzufügen.
quelle
Ich hatte dieses Problem, nachdem ich ein neues Ziel hinzugefügt und dann eine neue Klasse im Dialogfeld "Neue Datei" erstellt hatte, konnte jedoch versehentlich das neue Ziel sowie das ursprüngliche Ziel im Erstellungsdialog nicht überprüfen, sodass das Objekt nur zu meinem hinzugefügt wurde ursprüngliches Ziel. Die Lösung bestand darin, die Quelldateien zu löschen (nur Verweise entfernen) und sie dann mithilfe von "Dateien hinzufügen" wieder hinzuzufügen. Diesmal wurden beide Ziele überprüft.
quelle