webentwicklung-frage-antwort-db.com.de

"Konnte keine Informationen für die Klasse ViewController finden"

Dieser Fehler hat mich verrückt gemacht, seit ich Xcode (4.6.3) verwendet habe. Immer wenn ich versuche, ein Storyboard-Element mit meinem Code zu verknüpfen, erhalte ich die Fehlermeldung:

Für die Klasse ViewController konnten keine Informationen gefunden werden. 

Dies geschieht auch bei benutzerdefinierten Klassen. Ich habe Methoden wie versucht:

  • Löschen der Delegatdaten 
  • Klassen entfernen und erneut hinzufügen 
  • Xcode neu starten.
  • Xcode neu installieren. 

Ich kann nicht bei gedrückter Strg-Taste ziehen, um Verbindungen zu erstellen, unabhängig von der Klasse. Das gleiche Problem tritt bei einer brandneuen Vorlagenanwendung auf. Wenn ich den Code manuell eingebe und dann die Strg-Taste drücke, kann ich eine funktionierende Verbindung herstellen, aber ich kann ihn nicht automatisch hinzufügen. Nichts, was ich bisher im Internet gefunden habe, hat geholfen. Irgendwelche Hinweise?

133
user2597451

Was dieses Problem gelöst hat, war das Löschen der Klasse aus dem Projekt.

Schritte:

  1. Suchen Sie im Projektdatei-Explorer (linkes Bedienfeld) die Klasse und klicken Sie mit der rechten Maustaste -> Löschen
  2. Referenz entfernen (nicht in den Papierkorb verschieben, da die Klasse endgültig verloren geht)
  3. Klicken Sie mit der rechten Maustaste auf den Ordner, der die Klasse enthielt -> Dateien hinzufügen zu ...
  4. Suchen Sie die gerade gelöschte Klasse im Dateisystem

Dies scheint Xcode zu zwingen, die Klasse wieder mit dem Storyboard zu verknüpfen.

Anmerkung: für mich hat nicht gearbeitet:

  • Xcode schließen
  • Projekt reinigen
  • Löschen Sie den Klassennamen aus dem Storyboard und geben Sie ihn erneut ein

Ich denke, das ist ein Fehler von Apple

259
Chris Harrison

Für den Fall, dass jemand noch immer frustriert ist, gibt es einen Trick, um die Dinge zum Laufen zu bringen.

Was ich mache, ist manuell einen Ausgang in meine Klasse einzugeben, zum Beispiel: @IBOutlet weak var someView: UIView!, und ziehen Sie aus dem Code in die Ansicht in IB oder Storyboard. Danach kann ich von IB/Storyboard in meine Klasse ziehen, um Verbindungen herzustellen. Die Editor-Editoren erkennen die Klasse in "Automatisch" usw.

Funktioniert jedes Mal.

118
Andrew Robinson

Für mich, sie aus der Zielmitgliedschaft in der rechten Spalte zu entfernen und sie erneut hinzuzufügen, war der Trick  enter image description here

28
Ruud Visser

Manchmal verwendet Xcode aufgrund von VC keine Klassendatei. Die einfache Lösung dafür ist: 

eigenschaft manuell schreiben, wie angegeben. 

class YourClassName{

     @IBOutlet weak var YourTableName: UITableView!

}

Dadurch wird ein leeres Verknüpfungszeichen vor @IBOutlet erstellt. Öffnen Sie Ihr Projekt im Editor, und klicken Sie dann auf das Verknüpfungszeichen enter image description here und ziehen Sie in die Ansicht, die Sie verbinden möchten (ich habe eine Verbindung mit TableView hergestellt). und das ist es. Viel Spaß beim Codieren !!!

9
MRizwan33

die folgenden schritte funktionieren für mich hoffnung, dass auch für sie funktioniert 

1- Sie müssen Ihr Projekt nach dem Schließen von Xcode erneut öffnen.

2- Warten Sie auf die Indizierung der Projektdateien

3- Prüfen Sie, ob es funktioniert oder nicht

4- Wenn noch nicht funktioniert, folgen Sie Schritt 5, falls Sie nicht glücklich für Sie sind :)

5- Bereinigen und erstellen Sie Ihr Projektziel 

 enter image description here

6
Amr Angry

Ich hatte dieses Problem gerade im April 2017 mit Xcode 8

Einfach eine Steckdose mit Code erstellen und kompilieren. z.B:

@IBOutlet weak var containerViewHeight: NSLayoutConstraint!

Du musst Xcode lieben ...

Edit: Es passiert immer noch Xcode 9

Ich habe alles ausprobiert und es hat nicht funktioniert. Was für mich funktioniert, ist:

  • Bereinigen Sie den Ordner und das Projekt.
  • Projekte öffnen (Fenster -> Projekte)
  • Suchen Sie Ihr Projekt in der Liste und löschen Sie die abgeleiteten Daten
  • Schließen Sie Xcode
  • Computer neu starten (ohne geöffnete Fenster erneut öffnen zu müssen)
  • führen Sie Xcode aus
  • Arbeit!

Alle meine View-Controller wurden nicht erkannt. Daher war das Löschen aller Dateien und das erneute Hinzufügen keine Option, da dies ein großes Projekt ist.

5
gmogames

Für mich hat folgendes funktioniert:

  1. Führen Sie einen 'sauberen' und einen 'sauberen Ordner' aus (drücken Sie im Produktmenü auf 'Option', um den Befehl 'sauberer Ordner' aufzurufen

  2. Stoppen Sie Xcode

  3. Wechseln Sie im Terminal zum Ordner für abgeleitete Daten:

    (/ Benutzer // Bibliothek/Entwickler/Xcode/DerivedData)

Löschen Sie das abgeleitete Datenverzeichnis für Ihr Projekt.

  1. Wave totes Huhn in der Luft

  2. Starten Sie Xcode

4
Joe149

Was für mich funktionierte, war, anstatt die Verbindung vom Button zum Code zu ziehen, war:

  1. Klicken Sie auf das gewünschte Storyboard-Element.
  2. Verbindungsinspektor öffnen (rechtes Bedienfeld)
  3. Ziehen vom + -Kreis in den Code-Bereich . So:

nachdem ich meinen Code auf diese Weise verlinkt hatte, funktionierte er danach normal.

3
Hayden Crabb

Ich musste bisher einige Antworten zusammenstellen:

  1. Entfernen Sie den benutzerdefinierten Klassennamen aus dem Storyboard. 

(Klicken Sie im Storyboard oben links im View Controller auf die gelbe Schaltfläche -> Gehen Sie zum Identitätsinspektor (Option + Befehl + 3) -> Löschen Sie den benutzerdefinierten Klassennamen oben).

  1. Entfernen Sie den Verweis auf die Ansichtssteuerungsdatei.

(Klicken Sie mit der rechten Maustaste auf die Datei -> Löschen -> Referenz entfernen).

  1. Fügen Sie die View-Controller-Datei wieder dem Projekt hinzu.

(Klicken Sie mit der rechten Maustaste auf den Ordner, in dem sich die Datei befunden hat -> "Datei zu [Projekt] hinzufügen").)

  1. Fügen Sie den benutzerdefinierten Klassennamen wieder dem Storyboard hinzu.
3
yndolok

Wenn die Leute das oben Genannte versuchen und die Dinge immer noch nicht funktionieren, fügte der seltsame Trick, der für mich funktionierte, den Auslass in ein Stück Whitespace. Dies funktioniert, wenn sich keine anderen Zeilen direkt über oder unter der hinzugefügten Zeile befinden. Seltsam, aber es hat funktioniert!

3
Elliot Goldman

Produkt> Reinigen (Befehl - Umschalttaste - K) hat es für mich behoben! 

2
Jangles

Das hat für mich funktioniert:

  1. Führe ' Clean Build Ordner ' aus
    (Halten Sie die Optionstaste gedrückt und rufen Sie das Menü " Product " auf, um darauf zuzugreifen.
  2. Führen Sie im Menü " Product " ein einfaches "Clean" (CMD-SHIFT-K) aus. 
  3. Build das Projekt, damit Xcode die Dateien kompilieren kann. Lassen Sie es gegebenenfalls auch Dateien indizieren.

Nebenbei bemerkt bin ich nicht sicher, ob dies geholfen hat, aber ich habe auch die Abgeleiteten Daten gelöscht, bevor Sie die obigen Schritte ausführen (Xcode-Einstellungen> Standorte).

2
programmer

Dies ist der EINFACHSTE Schritt, den ich zur Behebung dieses Problems durchgeführt habe.

  1. Ich säubere das Projekt
  2. Ziehen Sie eine neue Schaltfläche in den Ansichts-Controller.
  3. Bauen Sie das Projekt auf.
  4. Verbinden Sie die neu gezogene Taste mit der Klasse (entweder Steckdose oder Aktion).
  5. Dann voila !!! Andere Outlets können jetzt wieder mit der Klasse verbunden werden!
2
user2480567

Bleib fokussiert!

Ich fügte eine neue Klasse mit einer Xib hinzu und begann, dieses Problem zu sehen. Ich verbrachte eine gute Zeit damit, die Antworten hier durchzulesen und zu sehen, ob etwas davon einen Unterschied machte.

Zufällig habe ich mehrere Ziele in meinem Arbeitsbereich und oft muss ich zwischen ihnen wechseln.

Es stellt sich heraus, dass durch das Hinzufügen neuer Dateien ein neuer Index in Xcode gestartet wird. Wenn Sie jedoch auf das falsche Ziel zeigen, ist die Indizierung wahrscheinlich bedeutungslos, und während des Verbindungsvorgangs kann Xcode Ihre Klasse nicht finden.

Zusamenfassend

Schritt 1.

 Target Seledction

Stellen Sie sicher, dass Sie das richtige Ziel festgelegt haben, sodass die Indizierung sinnvoll ist.

2
Damo

Ich habe alle diese Antworten ausprobiert. Das Problem bestand für mich darin, dass Xcode die Dateien nicht indizieren konnte. Ich habe das Problem behoben, indem ich einfach Xcode beendet und das Projekt erneut geöffnet habe. Natürlich habe ich das getan, nachdem ich alle oben genannten Lösungen ausprobiert hatte: p

2
JohnVanDijk

Sie müssen lediglich das Projekt reinigen und neu erstellen.

1

Wenn Sie nach meinem Test eine Klasse löschen, die im Xcode zugeordnet ist, und dann erneut eine Datei hinzufügen, tritt dieses Problem auf.

1
inix

Normalerweise habe ich den Code für die Klasse bisher noch nicht gespeichert. Hüpfen Sie einfach zum Code und drücken Sie cmd + s. Das Problem wird dadurch häufig behoben.

1
Delimiter

Keiner der obigen Schritte hat bei mir funktioniert, aber ich glaube, ich habe das Problem möglicherweise entdeckt. Zumindest hat es bei mir funktioniert und es ist kein Fehler in Xcode.

Wenn Sie sich im Assistenten-Editor befinden, sehen Sie oben im Fenster den Code für Ihren viewController. Die dritte Option von rechts lautet wahrscheinlich "Manuell", sollte aber "Automatisch" heißen. Nachdem ich dies geändert hatte, wurde das Problem behoben!

1
John Nolan

Ich bekam ein ähnliches Problem: "Konnte keine Klasse mit dem Namen ... finden" und die Ursache war für mich dumm, als ich es herausfand. Stellen Sie sicher, dass Sie nicht vom Element auf die interface - ziehen. Stellen Sie sicher, dass es in die Klasse selbst gezogen wird

1
Will Buffington

Wählen Sie den ViewController in StoryBoard aus, löschen Sie den aktuellen Wert in Rechter Handbereich / "Kundenklasse"/"Klasse" und fügen Sie die Kontrollklasse erneut hinzu (Typ: "SampleViewController" ...). > Diese Arbeit für mich

1
tungnv

Für mich konnte die Ansicht, für die ich eine benutzerdefinierte Klasse angegeben hatte, nicht vom Schnittstellenersteller kompiliert werden. Es wurde @IBDesignable markiert. 

Das Entfernen von @IBDesignable und das Hinzufügen meiner Outlets und das Markieren als @IBDesignable hat das Problem in meinem Fall behoben.

0
Nick DiZazzo

In meinem Fall war dies darauf zurückzuführen, dass der Xcode-Indexierungsprozess nicht mehr ausgeführt wurde. Ein Neustart meines Macs hat es behoben.

0
David Wood

Ich habe ALLES ausprobiert!

Stellen Sie sicher, dass der Klassenname Ihres UIViewController nicht das Wort "Test" enthält.

Fehlerbericht übermittelt.

0
Aaron Kreipe

Ich würde versuchen, die betreffenden .m- und .h-Dateien neu zu erstellen und ihnen einen ursprünglichen Namen zu geben, nicht generisch wie "ViewController". Probieren Sie etwas mehr aus, was die Datei tun soll, und enden in View Controller (d. H. "PizzaDecoraterViewController").

Wählen Sie dann den ViewController aus, den Sie mit diesen Dateien verbinden möchten. Stellen Sie sicher, dass Sie den ViewController auswählen, nicht nur ein Objekt innerhalb. Klicken Sie unten auf die schwarze Leiste (die mit den Symbolen "First Responder" und "Exit"). Der gesamte ViewController sollte blau umrandet sein. Wechseln Sie dann im Identitätsinspektor zum Abschnitt "Benutzerdefinierte Klasse". Im ersten Feld sollte ein ausgegrauter "UIViewController" angezeigt werden. Geben Sie in dieses Feld den Namen der .h- oder .m-Datei ein, zu der Sie eine Verbindung herstellen möchten (beginnen Sie mit der Eingabe von PizzaDecorator ... und es sollte etwas automatisch vervollständigt werden). Drücken Sie dann die EINGABETASTE.

Stellen Sie beim Öffnen des Assistenten-Editors sicher, dass die Datei, in die Sie ziehen und ablegen möchten, tatsächlich die richtige Datei ist.

Wenn Sie alles wie oben beschrieben getan haben, sollte es funktionieren.

0
CaptJak

In meinem Fall funktionierte die Sache (es ist ein bisschen seltsam, hat aber funktioniert) folgendes: 

Versuchen Sie, eine Datenquelle hinzuzufügen (z. B. eine Erweiterung des ViewControllers wie eine UITableViewDataSource). Xcode versucht, den ViewController neu zu laden. Dann schrieb ich eine Methode des Protokolls (am Anfang hat Xcode die Methoden nicht automatisch vervollständigt, sondern manuell geschrieben), dann habe ich die IBOutlets hinzugefügt und schließlich die Datenquelle entfernt.

Beispiel:

class TestViewController:UIViewController{
    // This viewController presents “Could not find any information for  class named ViewController”
}

extension TestViewController:UITableViewDataSource{
    //Add Some methods of the protocol, Xcode will try to autocomplete and then it's going to reload the class, from then you can add your IBOulets / Actions .. And remove this extension if you don't need it otherwise.
}
0

Okay, Jungs haben fast alle Top-Antworten gesehen und keine hat für mich funktioniert.

Was für mich funktioniert hat, ist folgendes: 

  1. Kopieren Sie die Derived Data-Adresse aus Ihrem Xcode-Projekt ... 

Xcode -> Preferences -> Location Tab -> Derived Data

  1. Close Xcode

  2. Gehen Sie nun zum abgeleiteten Datenort und löschen Sie dort den Ordner Ihres Projekts.

Jetzt Xcode und voila öffnen!

0
arqam

Versuchen Sie einfach, abgeleitete Daten für das Projekt zu löschen

0
david.gol

Gehen Sie zum Projektordner und löschen Sie den abgeleiteten Datenordner

wenn Sie die abgeleiteten Daten nicht finden können, gehen Sie zum Finder und gehen Sie zu

 ~/Library/Developer/XCode/DerivedData/"project"

(Ersetzen Sie "Projektname" durch Projektnamen)

0
Sandu

Als ich @ ChrisHarrisons Antwort kommentierte, funktionierten diese Dinge nicht für mich, aber das Löschen der abgeleiteten Daten wie in Ich habe es zum Funktionieren gebracht, indem ich die abgeleiteten Daten wie in https://stackoverflow.com/a/16182672) löschte/1449799

0
Michael

In meinem Fall hatte ich den gleichen Klassennamen und xcode konnte nicht erkennen, auf welchen ich ziele. Seien Sie also vorsichtig, wenn Sie den Namen Ihrer Klassen auswählen.

0
andesta.erfan

Überprüfen Sie im Finder Xcode, ob er geschlossen ist oder nicht. 

Xcode beenden und neu starten.

Produkt> Reinigen

0
erdikanik

Löschen Sie die Dateien (nur die Referenzen) und fügen Sie die Dateien erneut hinzu.

0
jomafer

Ich weiß, dass dies in den meisten Fällen nur das Verhalten von Xcode ist, aber in meinem Fall konnte keine der vorgeschlagenen Aktionen das Problem beheben, und ich glaube, es war ein Fehler, den ich beim Versuch, mein Projekt umzubenennen, gemacht habe, sodass ich schließlich ein neues Projekt erstellte und alles über importieren.

Dies hat es schließlich behoben.

0
CristianMoisei

Ich starte einfach Xcode neu und dann funktioniert es.

probiere es einfach aus

rm -rf ~/Library/Caches/com.Apple.dt.Xcode
defaults delete com.Apple.dt.Xcode IDEIndexDisable
defaults write com.Apple.dt.Xcode IDEIndexEnable 1 
0
yousuke