2015-11-05 6 views
5

Ich arbeite in einem Objective-C-Projekt und versuche, Swift einzuführen. Ich habe Bridging-Header arbeiten, so dass der Code kompiliert, jedoch keine Objective-C-Klassen von Autocomplete abgeholt werden.In Xcode 7 kann Swift Objective-C-Code nicht automatisch vervollständigen

Ich habe versucht:

  1. Kündigen Xcode/Neustarten von Computer-
  2. Löschen des DerivedData Ordner an (~/Library/Developer/Xcode/DerivedData)
  3. Entfernen der Datei in ~/Library/Cache-Speicher/com.apple.dt.Xcode
  4. Ändern Simulator Typ

jedoch diese Vorschläge nicht für mich arbeiten.

automatische Vervollständigung funktioniert gut für UIKit etc. und für meine anderen Swift-Code. Es ist nur der Objective-C-Code, der durch den Bridging-Header verfügbar gemacht wird, der nicht automatisch vervollständigt wird.

Irgendwelche Vorschläge?

+0

Kompilieren und ausführen? – Darko

+0

Ja, es wird kompilieren und gut laufen. – Wyatt

+0

Nun, ich habe es gerade auf meiner Maschine ausprobiert und ich kann Ihnen sagen, dass es funktionieren sollte; manchmal wird Xcode lustig über Autocomplete, vielleicht starte deinen Computer neu (das behebt immer Dinge, oder? :)) – Alex

Antwort

5

Ich glaube, ich dieses herausgefunden:

Unser Projekt mehrere Ziele hat, und die meisten Dateien gehören zu mehreren Zielen. Wenn Sie eine automatische Vervollständigung wünschen, muss die zu importierende Kopfzeile für jedes Ziel, zu dem die Datei gehört, in den Bridging-Header importiert werden.

Wenn ich den Header, den ich in jedem Bridging-Header wollte, importierte, begann Autovervollständigung wie erwartet zu funktionieren.

Update: Scheint so, als ob Sie bis zu einem Überbrückungskopf konsolidieren können, wenn dieses Setup für Ihr Projekt funktioniert. Das würde verhindern, dass Sie jedes Mal mehrere Header aktualisieren müssen, wenn Sie einen Import hinzufügen möchten.

1

ich vor kurzem lief in dieser Frage mit einem großen meist-objc Projekt. Hoffentlich hilft das jemandem.

Für mich die automatische Vervollständigung worden ist, bevor in diesem Projekt arbeiten, aber dann begann für alle Objective-C-Klassen/Methoden zum Scheitern verurteilt. Das Projekt wurde trotzdem ohne Probleme kompiliert.

Ich beendete das Kommentieren aller vorhandenen Importe im Bridging-Header und fügte eine einfache Testklasse hinzu, für die Auto-Completion funktionierte. Dann kommentieren wir jeden weiteren Import, bis ich isoliert habe, welches das Problem verursacht hat.

Zum Beispiel im Grunde mein Kopf sah wie folgt aus:

für SimpleTestClass, wenn sie von Swift verwendet
#import "SimpleTestClassWithOneMethod.h" 
// #import "MyClass.h" 
// #import "MyOtherClass.h" 
// #import "SomeThirdPartyModule.h" 

Und die automatische Vervollständigung zu arbeiten begann:

#import "MyClass.h" 
#import "MyOtherClass.h" 
#import "SomeThirdPartyModule.h" 
etc... 

ich das tat.

Dann begann andere Klassen aus dem Bridging-Header auskommentieren, bis es funktionierte. Der Import, der das Problem verursacht hat, war ein Framework von Drittanbietern, nicht sicher, warum es ein Problem verursacht hat, aber ich habe nur herausgeholt, was ich von diesem bestimmten Header für meinen schnellen Code brauchte, und es separat importiert.

2

Dank Joel.d Antwort habe ich das gleiche Problem in meinem Projekt behoben.

Im Brückenkopf hatte ich line:

#import "BTData.h" 

Bitte beachten Sie, dass es einige sdk aus Kakaoschote war, und vor kurzem haben wir alle Schoten aktualisiert, so dass wahrscheinlich das ist, wenn die automatische Vervollständigung Probleme begonnen hat. Durch das Ersetzen der obigen Zeile wurde das Problem behoben und jetzt werden alle Obj-c-Klassen in Swift-Dateien automatisch vervollständigt.

#import <Braintree/BTData.h> 
Verwandte Themen