Xcode 4 Code Sense funktioniert nicht

77

Ich führe ein "altes" Xcode 3-Projekt in Xcode 4 aus und Code Sense funktioniert nicht für meine eigenen Klassen. Ich habe folgendes versucht:

  • Reinigen / umbauen
  • Abgeleitete Daten entfernen
  • 4.3 Dokumentation installieren
  • Neustart

Ohne Glück.

Manchmal funktioniert der Code-Sinn, aber meistens bekomme ich nur "Keine Vervollständigungen".

Okku
quelle
1
Haben Sie das gestern veröffentlichte Update auf 4.0.1 installiert? Die Fixed a bug that prevented indexing of some projectsVersionshinweise klingen so, als ob sie mit Ihrem Problem zu tun haben könnten.
Matthias Bauch
Installiert 4.0.1, entfernt alten Index (abgeleitete Daten), bereinigt, neu erstellt, leider immer noch gleich. Ich denke, das Problem hat mit dem Update vom alten 3-Projekt zu tun. Ich habe einige neue Projekte in xcode 4 erstellt und sie scheinen zu funktionieren.
Okku
Nur zum Aktualisieren scheint heute alles viel besser zu funktionieren. Vielleicht hat das 4.0.1-Update doch den Trick getan.
Okku
Tut mir leid zu sagen, dass dies zunächst eine Farce ist. Der Xcode-Code-Sinn funktioniert nicht wie erwartet.
Okku
Ich habe genau das gleiche Problem. 3.2 Projekt in XC4. 4.0.1 hat es nicht behoben. Versuchen Sie auch alle anderen "schnellen" Korrekturoptionen (bereinigen, abgeleitete Daten löschen, Doccs installieren usw.) ohne Erfolg. Leider denke ich, dass die einzige Möglichkeit im Moment darin besteht, ein neues Projekt in XC4 zu generieren und alle Dateien zu kopieren - ein großer Aufwand bei einem großen Projekt :(
am

Antworten:

128

Versuche dies:

Öffnen Sie den Organizer und dann die Registerkarte Projekt.

Löschen Sie die "Abgeleiteten Daten". Xcode sollte dann Ihr Projekt neu indizieren und Code Sinn sollte funktionieren. Zumindest für mich gearbeitet.

Saikat
quelle
2
Ich habe das versucht und es hat nicht geholfen (wie ich bereits in meiner Frage angegeben habe). Ich habe dieses Problem nicht mehr, da ich keinen Xcode mehr verwende. Ich habe auf App-Code umgestellt.
Okku
5
Dies hat das Problem für mich behoben. Neueste Xcode-Version 4.3.1 (4E1019). Vielen Dank.
Elliot
2
Dies hat mein Problem nicht gelöst, schauen Sie sich @ Chris Lösung für dieses Problem an, schöne Lösung
Raj
@ Saikat, es hilft mir aus. Vielen Dank!
Alloc_iNit
108

Ich weiß, dass dies spät ist, aber als Referenz: http://sealedabstract.com/code/when-xcode-4s-code-completion-autocomplete-breaks/

  • Schließen Sie das Projekt und lassen Sie XCode weiterhin laufen.

  • Öffnen Sie das Organizer-Fenster von XCode, wechseln Sie zur Registerkarte Projekte, wählen Sie das richtige Projekt aus und klicken Sie auf die Schaltfläche Löschen neben „Abgeleitete Daten“.

  • Beenden Sie XCode.

  • Navigieren Sie im Finder zur .xcodeproject-Datei Ihres Projekts. Klicken Sie mit der rechten Maustaste und wählen Sie "Paketinhalt anzeigen".

  • Verlassen Sie die Datei project.pbxproj, löschen Sie jedoch die Datei project.xcworkspace, alle .pbxuser-Dateien und den gesamten Benutzerdatenordner.

  • Öffnen Sie das Projekt in XCode. Je nach Größe Ihres Projekts wird XCode etwa 10 bis 60 Sekunden lang eine hohe CPU-Auslastung aufweisen. Im Aktivitätsfenster wird "Indizierung" angezeigt.

  • Wenn Ihre CPU-Spitze zur Erde zurückkehrt, funktioniert die Code-Vervollständigung wieder.

Dort wird viel gelöscht, seien Sie also bitte vorsichtig, aber das hat definitiv bei mir funktioniert.

Chris Burt-Brown
quelle
3
Danke für den Link. Für das, was es wert ist, stellte ich fest, dass ich keine Dateien explizit löschen musste, damit Code Sinn in Xcode 4.2.1 funktioniert. Das Löschen der "abgeleiteten Daten" über das Organizer-Fenster (dh Ihre ersten drei Aufzählungszeichen) war ausreichend. Vielen Dank.
PixelCloudSt
Dies hat bei mir funktioniert, aber als Hinweis sollten Sie versuchen, das Organizer-Fenster zu öffnen, DerivedData zu löschen und Xcode zuerst zu beenden und erneut zu öffnen, bevor Sie andere Dateien löschen.
Cortices
2
Das Löschen geeigneter Dateien aus dem .xcoeproject-Bundle beendete mein Leiden.
Lukasz
Das Löschen von "Abgeleiteten Daten" behebt das Problem meistens für mich, aber +1 für die Bereitstellung einer Clean-Slate-Anleitung für alle Fälle!
MechEthan
1
Das Löschen abgeleiteter Daten allein hat dies nicht getan, aber das Löschen der Dateien, die Sie im .xcode-Projekt vorgeschlagen haben, hat funktioniert. Gib mir fünf!
Brenden
26

Ich habe dies getan und es hat mehrmals für mich funktioniert (nachdem ich zuvor alle oben genannten Versuche unternommen habe).

Bearbeiten: Jetzt drücke ich einfach auf Leertaste, Rücktaste (die Mac-Version) und erstelle neu ... funktioniert gut. Denken Sie dann daran, zu scrollen (manchmal werden die Farben erst angezeigt, wenn Sie irgendwo scrollen).

  1. Suchen Sie Ihre Präfixdatei: "ProjectName_prefix.pch".
  2. Kommentieren Sie eine Zeile aus. (im Grunde ändern)
  3. Erstellen Sie Ihr Projekt, egal ob es fehlschlägt oder nicht.
  4. Kommentieren Sie es aus.
  5. Bauen Sie erneut.

Ich wette, nur Schritt 2 (Ändern des Präfixes) ist das, was es tut, aber diese bringen Sie im Wesentlichen wieder zum Laufen. Plötzlich färbt sich alles auf magische Weise neu und vervollständigt Funktionen.

Viel Glück, wenn das nicht funktioniert, versuchen Sie vielleicht, dies mit Ihren Abhängigkeits-PCH-Dateien (Three20 oder FB-APIs) zu tun.

Stephen J.
quelle
Sind diese standardmäßig enthalten? Ich benutze xocde 5 und kann es nicht finden.
Bren
Yup das gleiche hat bei mir funktioniert. Auch in Xcode 6
Beau Nouvelle
Mein Xcode verliert den Sinn, wenn ich anstelle des Simulators zu "iOS-Gerät" wechsle. Es hat keine Menge an abgeleiteten Daten gelöscht. Ich habe diese Methode ohne Hoffnung ausprobiert und sie hat funktioniert!
Entonio
@Bren PCH-Dateien waren seit einiger Zeit nicht mehr standardmäßig in XCode.
Stephen J
5

Das Löschen der "abgeleiteten Daten" funktioniert nur vorübergehend für mich. Ich muss es tun und dann Xcode wie 3-4 mal täglich neu starten, damit der Code-Sinn wieder funktioniert.

Ich habe herausgefunden, dass die wahre Ursache in den Build-Einstellungen des Ziels liegt. Ich habe alles von Header-Suchpfaden zu Benutzer-Header- Suchpfaden verschoben und es ist behoben. In meinem Fall ist das Framework, mit dem ich arbeite, RestKit.

Übrigens, ich habe mir das ausgedacht, weil ich meinem Projekt ein anderes Projekt ( QuickDialog ) hinzugefügt habe und ich war neugierig, dass es Benutzer-Header-Suchpfade verwendet , aber keine Header-Suchpfade . Hier ist der Unterschied zwischen ihnen.

Hlung
quelle
AHA! Ich habe RestKit verwendet und hatte nur Probleme damit. Ich werde noch einmal prüfen, ob dies das Problem ist, und hier Bericht erstatten.
Makdad
Nee. Ich dachte, es würde ... es schien zu helfen, aber nein, ich habe das Gefühl, ich lösche nur die abgeleiteten Daten weniger.
Makdad
Ich musste die abgeleiteten Daten danach noch einige Male für verschiedene Builds löschen. Danach muss ich es nie wieder tun. Aber ja, ich weiß immer noch nicht, wie das funktioniert ...
Hlung
Das schien für mich zu funktionieren. Ich benutze eine statische Bibliothek und diese Autovervollständigung hat mich verrückt gemacht
Edward Ashak
4

Sie können dieses Problem beheben, indem Sie die Build-Einstellungen wie folgt ändern : PreCompile Prefix Headers: NO

Gowrikarthick
quelle
3

Zu Ihrer Information: Wenn eine Datei keinen Code-Sinn hat, der Rest Ihres Projekts jedoch, überprüfen Sie, ob sie einem Ziel hinzugefügt wurde. Sobald ich das getan habe, habe ich wieder Code-Sinn in dieser Datei.

zekel
quelle
1
Löschen Sie auch alle Kommentarblöcke unter dem Wort @end. Das war das Problem für mich.
GeneCode
2

Es ist schon lange her, aber die Antwort ist nur, den Code in einen neuen Ordner zu verschieben, und der Code-Sinn sollte jetzt funktionieren.

Dies geschah, als ich eine neue Objective-C-Klasse hinzufügte und der Code-Sinn nicht nur für die neu hinzugefügten .m- und .h-Dateien funktioniert (bei XCode 4, dem neuesten Update in diesem Beitrag).

Bahamut
quelle
2

Schließen Sie alle Xcode-Fenster

Löschen Sie alle Ihre Projekte unter xcode> window> organisator und starten Sie Ihr Projekt neu. Es wird nun Ihr Projekt richtig erfassen und indizieren.

Saad
quelle
1

Ich habe hier ausführlich darüber geschrieben .

Grundsätzlich war mein Fix das mit Lokalisierung. Ich habe ein Upgrade von xcode 3.2.5 auf xcode 4 durchgeführt und dann mit dem integrierten Interface Builder herumgeschraubt und versehentlich die Lokalisierung für eine XIB-Datei aktiviert, wodurch meine Quelldateien im Verzeichnis en.lproj abgelegt wurden. Nachdem sie wieder in den Klassenordner verschoben wurden, funktionierte es perfekt.

zakishaheen
quelle
Panzer, aber das entspricht nicht meinem Problem, ich habe Probleme mit all meinen Klassen und nein, ich habe meine Quellen nicht in einem lokalisierten Verzeichnis.
Okku
Haben Sie versucht, ein Upgrade auf xcode 4.0.2 durchzuführen? Es ist viel stabiler, denke ich
Zakishaheen
0

Wiederum, um anderen bei diesem Problem zu helfen, das in meinem Fall beim Upgrade auf Xcode 4.3 aufgetreten ist.

Natürlich habe ich die in diesem Beitrag angebotenen Lösungen ausprobiert, und keine davon hat funktioniert. Der Vorschlag, den Standort des Projekts in Finder zu verschieben, brachte jedoch Code Sense zurück, aber die Vorschläge ergaben keinen Sinn.

Am Ende habe ich mein Projekt gelöscht und es erneut aus dem Git-Repository geklont. Das hat Code Sense für mich zurückgebracht ...

ungültiges Argument
quelle
0

Ich öffne ein zweites Projekt im Hintergrund, wenn die Codeerkennung meines Xcodes nicht mehr funktioniert (normalerweise funktioniert sie beim ersten Öffnen des Projekts, aber nach einer Weile funktioniert die Codeerkennung nicht mehr). Also öffne ich ein zweites Projekt in Xcode. Xcode beginnt mit der Indizierung des zweiten Projekts und auf magische Weise ist der Code-Sinn für mein Hauptprojekt zurück.

Ausführen von Xcode 4.3.1 unter Lion

Hoffe das hilft jemandem.

newDeveloper
quelle
0

Aufgrund dieses Kommentars hier konnte ich das Problem an meinem Ende debuggen. Es schien ein schlechtes Flag zu sein, das der Clang-Präprozessor nicht richtig erkannte. Grundsätzlich läuft

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

in Terminal erhöht die Ausführlichkeit des Indexers und soll Ihnen helfen, Probleme aufzuspüren. Öffnen Sie Console.app und suchen Sie nach Nachrichten von Xcode. Die Suchzeichenfolge IDEIndexingClangInvocationhat mir geholfen, sie zu finden.

Damian
quelle
0

Für mich geschah dies einfach, weil die Datei keine Zielmitgliedschaft hatte. Wenn die ersten Antworten bei Ihnen nicht funktioniert haben, gehen Sie zu Ihrer .m-Datei (vermutlich ist es diese Datei, mit der Sie Probleme haben), öffnen Sie die Ansicht Dienstprogramme (Bearbeiten -> Dienstprogramme -> Dateiinspektor anzeigen) und klicken Sie unter "Ziel" auf "Ziel" Mitgliedschaft "Überprüfen Sie das Ziel, zu dem diese Datei gehören soll.

Andrei
quelle