Neue Steckdosenverbindung konnte nicht eingefügt werden: Es konnten keine Informationen für die genannte Klasse gefunden werden


281

Ich habe auf Xcode eine Fehlermeldung erhalten, dass keine Informationen zum View Controller vorhanden sind.

Neue Steckdosenverbindung konnte nicht eingefügt werden: Es konnten keine Informationen für die genannte Klasse gefunden werden

Warum passiert dies?

Screenshot 1


2
Ich denke, dies wurde schon einmal gefragt: stackoverflow.com/questions/17735182/…
Tapani

Ich habe Xcode einfach beendet und dann wieder geöffnet. Der Compiler lädt alle Dateien neu und kann die gesuchte Datei erkennen
Jane Chicken

Stellen Sie sicher, dass Ihre View Controller-Datei noch keinen nicht verbundenen Ausgang hat. Ich entdeckte, dass ich es tat. Nachdem ich es gelöscht hatte, hatte ich keine Probleme.
Kex

Für mich funktionierte keine der oben genannten Lösungen. Ich musste den View Controller löschen, den ich kopierte und erneut in mein Storyboard einfügte, um ihn wiederzuverwenden. Dann zog ich einen neuen View Controller in das Storyboard und alles wurde gut :). Ich hoffe, es könnte jemandem mit dem gleichen Problem helfen.
Arslan Saleem

Dies ist ein Fehler in XCode, und ich weiß nicht, warum sie ihn nicht beheben. Sie müssen XCode schließen und erneut öffnen. Wenn Sie erneut versuchen, die Steckdosen zu schließen, lassen Sie diesmal jedoch eine Reihe von EINGABEN, bevor Sie sie herstellen. Sie müssen nichts löschen oder Ihre Zeit mit anderen Optionen verschwenden ... Dies wird Ihre Probleme lösen.
Mavesonzini

Antworten:


692

Hier sind einige Dinge, die dies beheben können (in aufsteigender Reihenfolge der Schwierigkeit):

  • Bereinigen Sie das Projekt ( Produkt> Reinigen )
  • Manuell einfügen

    @IBOutlet weak var viewName: UIView!
    // or
    @IBAction func viewTapped(_ sender: Any) { }

    und steuern Sie das Ziehen dorthin. (Change geben je nach Bedarf.) Siehe auch diese .

  • Schließen Sie Xcode vollständig und starten Sie Ihr Projekt neu.

  • Löschen Sie den Ordner Abgeleitete Daten (Gehen Sie zu Xcode> Einstellungen > Speicherorte und klicken Sie auf den grauen Pfeil neben dem Ordner Abgeleitete Daten. Löschen Sie dann Ihren Projektordner.)
  • Klicken Sie in der Klasse auf Löschen, entfernen Sie den Verweis (nicht In den Papierkorb verschieben) und fügen Sie ihn erneut hinzu. (siehe diese Antwort )

Vergessen Sie nicht, die Klasse auf dem View Controller zu entfernen, damit diese Schritte funktionieren
Reggie

8
Keiner dieser Schritte hat in Xcode 8.3.2 für mich funktioniert. Ich musste "Identitätsinspektor anzeigen"> das Feld "Klasse" löschen (den Namen der benutzerdefinierten Klasse markieren und löschen)> den Klassennamen erneut in das Feld "Klasse" eingeben. Xcode hat den Klassennamen automatisch vervollständigt. Ich drücke dann die Eingabetaste.
PeqNP

Fügen Sie die Zeile alias purgederiveddata='rm -rf ~/Library/Developer/Xcode/DerivedData/*'zu Ihrem ~ / .bashrc hinzu, um den Befehl purgederiveddatazum Löschen mit einem Befehl zu verwenden
eskimwier

Ich habe einen anderen Weg gefunden, um dieses Problem zu beheben. Dies ist mir passiert, als ich einige Build-Einstellungen geändert habe, um meine Build-Geschwindigkeit zu verbessern. stackoverflow.com/a/50555888/2952876
Mathias Van Houtte

Ich möchte Sie alle nachdrücklich ermutigen, meine unten stehende Lösung auszuprobieren. Wäre enttäuscht zu wissen, dass Leute ihre Computer für einen Fehler, der häufig auftritt, neu starten müssen.
Stephen Paul

134

Wenn keine der oben genannten Funktionen funktioniert, geben Sie zuerst den Namen der Steckdose in die Datei ein @IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!und klicken Sie dann von der Steckdose in der Schreibfeder auf die Variable, die Sie gerade programmgesteuert erstellt haben. Es sollte ohne den Aufwand funktionieren, etwas zu reinigen, zu bauen und zu löschen.


4
oft die schnellere Lösung, anstatt ewig damit zu verbringen, zu reinigen, zu bauen usw. danke.
mohonish

1
Sehr schön und sobald Sie dies tun, wird die Automatik angezeigt, danke.
AmJa

1
Verbinden Sie zunächst Ihr XIB-Objekt mit IBoutlets. Versuchen Sie dann, deren Einschränkungen IBOutlets zu verbinden. ohne dies wird immer ein Fehler angezeigt.
Chandramani

Es kann auch einen Unterschied machen, wo Sie versuchen, die neue Steckdose einzusetzen. Denn der Anfang der Liste (wo oben ein freier Raum ist) hat funktioniert; die Mitte der Liste nicht.
Richard

1
Dies sollte als die beste Antwort markiert werden. Es ist einfacher, schneller und zuverlässiger. Auch funktioniert es die ganze Zeit! Gute Arbeit und danke @StephenPaul
denis_lor

51

Führen Sie einfach die beiden folgenden Schritte aus, um diesen Fehler zu beheben

  1. Bereinigen Sie das Projekt mit Produkt> Reinigen
  2. Führen Sie das Projekt aus

Versuchen Sie nun, die Aktion oder den Ausgang hinzuzufügen. Das ist es.

Viel Spaß beim Codieren


4
Seltsam ... diese einfachen zwei Schritte haben auch für mich geholfen, das Problem zu lösen. Also empfehle ich, diese einfachen Schritte zuerst auszuprobieren :-)
Crosscode

49

Keiner der Tipps in der besten Antwort hat bei mir funktioniert. War verrückt geworden. Dann bemerkte ich, dass der Assistant Editor irgendwie auf Manual eingestellt war und ich mich auf der ViewController.swift (Schnittstelle) anstelle der ViewController.swift-Datei befand.

Das wurde geändert und das Problem gelöst. Ein bisschen peinlich, aber hey, wir lernen alle.

Geben Sie hier die Bildbeschreibung ein


1
Lebensretter Antwort! Keine der anderen Antworten löste es ein für alle Mal. Schade, dass die Fehlerbeschreibung nicht den geringsten Hinweis darauf gibt, dass Sie sich möglicherweise in der Wearg-Datei befinden. Vielen Dank. +1 für das Bild machte es alles klar.
Pauloco

Mir ist etwas ziemlich Ähnliches aufgefallen, aber etwas anderes: In dem Pfad oben, in dem der Name der Klasse angezeigt wird, gab es nur den Klassennamen, aber es fehlte der Pfadanfang als myProject> appName> controller und dann die Klasse. Ich wählte eine andere Klasse und dann zurück zu der problematischen, und alles in Ordnung
claude31

15

Hier sind die für mich gelösten Schritte:

  1. Entfernen Sie die Klassennamenreferenz aus der Ansicht (Storyboard / xib) und speichern Sie sie.
  2. Fügen Sie den Klassennamen erneut hinzu und speichern Sie ihn.
  3. Reinigen und bauen;

Getan !


10

Ich hatte das gleiche Problem. Ich habe die folgenden Lösungen satt, aber nicht funktioniert:

  1. Clean Project (cmd + shift + k) und selbst Clean Project Build (cmd + shift + alt + k)
  2. Deleted Derived data und Module Cache content

Im Folgenden finden Sie eine Problemumgehung für dieses Problem:

  1. Wechseln Sie zur Quellcodedatei und schreiben Sie die IBOutlet / IBActionmanuell (Kopieren Einfügen bevorzugt)

Screenshot 1

  1. Wechseln Sie dann zur Storyboard-Datei und öffnen Sie das UtilitesFenster
  2. Gehe zu Connection Inspector
  3. Verbinden Sie dann die IBOutletund IBActionin die Quelldatei geschriebene Datei mit Interface Builder.

Screenshot 2


Das Ziehen von Outlets / Aktionen funktionierte überhaupt nicht, aber nachdem ich es manuell so gemacht hatte, funktionierte alles wieder richtig.
Jason

Dies ist eine alternative Standardmethode zum Herstellen von Verbindungen. Im Fall von Optionsfeldaktionen ist AFAIK der einzige Weg. Im Storyboard können Sie auch mit der rechten Maustaste auf den Controller klicken, die Funktion suchen und die Verbindung herstellen.
Curt

8

Ich hatte das gleiche Problem. Mir wurde klar, dass als in X-Code ManualElement ausgewählt wurde, als ich versuchte, eine Steckdose durch Ziehen mit gedrückter Ctrl-Taste zu erstellen

Geben Sie hier die Bildbeschreibung ein

Nachdem ich es auf automatisch eingestellt hatte, funktionierte es

Geben Sie hier die Bildbeschreibung ein


Ich hatte genau dieses Problem. Ich habe den Unterschied nicht einmal bemerkt.
Joshua Dance

Toll!!! Ich habe so viel Zeit für dieses Fehlerbehebungsprojekt verloren, xCode neu gestartet und abgeleitete Daten gelöscht, aber das war nur die Lösung, die für mich funktioniert hat! Vielen Dank!
Anton Eregin

7

Ich habe dieses Problem gelöst, indem ich die Beschriftungen und Textfelder programmgesteuert erstellt und dann mit Befehlstaste aus den kleinen leeren Kreisen links im Code auf die Komponenten im Storyboard gezogen habe. Um meinen Standpunkt zu veranschaulichen: Ich habe geschrieben @IBOutlet weak var HelloLabel: UILabel!, dann Befehl gedrückt und den Code in die Komponente im Storyboard gezogen.


Diese Lösung hat bei mir perfekt funktioniert! Abgesehen davon habe @IBOutlet weak var myButton: UIButtonich den gleichen Prozess zum Einrichten verwendet @IBAction func doSomething(_ sender: Any) { }und diese Funktion dann mit UIButton auf meinem Storyboard verbunden. Vielen Dank für das Teilen dieser @KuboAndTwoStrings
Nii Mantse

6
  1. Schließen Sie das Projekt, an dem Sie arbeiten.
  2. Löschen Sie den Ordner 【DerivedData your Ihres Projekts. (Dieser Ordner befindet sich möglicherweise im Ordner Ihres Projekts oder im Ordner
    ~/Library/Developer/Xcode/DerivedData/
    (Ihrem Projekt) /) oder an einer anderen Stelle, die Sie eingerichtet haben.
  3. Starten Sie Ihr Projekt neu.

4

Ich habe eine einfachere Problemumgehung gefunden, da dieser Fehler auf XCODE 9 zu finden ist.

Schritt eins: Gehen Sie zu Ihrem Viewcontroller und schreiben Sie die Eigenschaft, die Sie verbinden möchten, manuell wie im folgenden Beispiel. Stellen Sie sicher, dass Sie das folgende Format verwenden.

@IBOutlet schwache var FragenStackView: UIStackView!

Schritt zwei Gehen Sie zu Ihrem Storyboard und verbinden Sie Ihre Ansicht oder was auch immer Sie versuchen, eine Verbindung mit der in Schritt 1 erstellten Eigenschaft herzustellen.

Auf diese Weise sparen Sie Zeit beim Entfernen und Bereinigen abgeleiteter Daten.


3

Ich habe diesen Fehler bekommen, als ich die Klasse umbenannt habe. Dann habe ich es gelöst, indem ich die folgenden Schritte befolgt habe

  • Im Xcode-Menü -> Product->Clean
  • Restart der Xcode

Dies war nur eine Lösung, die für mich lustig genug funktionierte.
Joseph Astrahan

2

In meinem Fall war dies bc. Ich habe eine neue UIViewController-Datei in IB ausgewählt und dann versucht, sie bei gedrückter Strg-Taste auf diesen neuen Controller zu ziehen, ohne zuvor die vorherigen Verbindungen im Connections Inspector zu entfernen. Entfernen Sie diese zuerst und versuchen Sie es erneut.


2

Bei mir hat es funktioniert, als ich auf der rechten Registerkarte> Lokalisierung das Kontrollkästchen Englisch aktiviert habe. Anfangs wurde nur Base überprüft. Danach hatte ich keine Probleme mehr. Hoffe das hilft!


2

Geben Sie hier die Bildbeschreibung ein

Ich habe die Option Automatisch ausgewählt , um die Datei ViewController.swift auszuwählen. Und dann kann ich Steckdosen nehmen.


2

Führen Sie die folgenden beiden Schritte nur aus, um diesen Fehler zu beheben.

1.  Clean Project using Product -> clean.
2.  Run the Project.

Versuchen Sie nun, die Aktionen oder Ausgänge hinzuzufügen / zu verbinden.

Ich arbeite viele Male gut für mich.


1

Es passierte, als ich Swifteinem Objective-CProjekt eine Datei hinzufügte .
In dieser Situation können Sie also Folgendes tun. .

  • Select MY_FILE.Swift >> Delete >> Remove Reference
  • Select MY_FOLDER >> Add MY_FILE.Swift
  • Voila ! You are good to go .

Bis dahin! Ich habe schon seit einer halben Stunde versucht, dieses Problem alleine zu lösen lol. Probleme wie diese in Storyboards sind jedoch leicht zu beheben. Vielen Dank! Das hat mir sehr geholfen!
Glenn

0

Einfachste Lösung: - Ich habe xCode 7 und iOS 9 verwendet.

in deiner .m

lösche #import "VC.h"

Speichern Sie .m und verbinden Sie Ihre Steckdose erneut. Es funktioniert einwandfrei.


0

Ich habe xCode 7 und iOS 9 verwendet.

in deiner .m

löschen #import "VC.h"

Speichern Sie .m und verbinden Sie Ihre Steckdose erneut. Es funktioniert einwandfrei.

in deiner .m

hinzufügen #import "VC.h"

speichern .m


0

Nichts davon hat bei mir funktioniert, aber ich habe es herausgefunden.

Im Storyboard ich den entsprechenden ViewController in die Zwischenablage kopiert und gelöscht, danach wieder eingefügt.

Plötzlich funktionierte alles wieder wie ein Zauber!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.