Ich habe ein Objective-C-Projekt in Xcode 8 Beta 3. Seit der Aktualisierung erhalte ich bei jedem Build-Versuch die folgende Fehlermeldung:
"Legacy Swift Language Version verwenden" (SWIFT_VERSION) muss für Ziele, die Swift verwenden, korrekt konfiguriert sein. Verwenden Sie das Menü [Bearbeiten> Konvertieren> In aktuelle Swift-Syntax…], um eine Swift-Version auszuwählen, oder verwenden Sie den Editor für Build-Einstellungen, um die Build-Einstellungen direkt zu konfigurieren.
Hat jemand dies angetroffen? Da es sich um ein Objective-C-Projekt handelt, gibt es keine Build-Einstellung zum Konfigurieren von Swift. Ich habe auch sichergestellt, dass keine der Projektabhängigkeiten oder CocoaPods Swift verwenden. Die einzige Lösung, die ich habe, ist die Verwendung von Beta 2. Irgendwelche Ideen, wie ich dieses Problem beheben könnte?
Ich sollte auch erwähnen, dass ich OSX 10.12 Beta 2 verwende.
quelle
Antworten:
Wenn Sie CocoaPods verwenden und möchten, dass es jedes Mal automatisch repariert wird, wenn Sie eine ausführen
pod install
, können Sie diese Zeilen am Ende Ihrer Poddatei hinzufügen:BEARBEITEN: Dieses Problem ist jetzt behoben, wenn Sie CocoaPods v1.1.1 oder höher verwenden. Vergessen Sie nicht, die
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
Einstellung aus Ihren Hauptprojektzielen zu entfernen .quelle
2.3
anstelle der3.0
großartigen Lösung! Damit wird an die"Use Legacy Swift Language Version"
zuNo
(oder , wenn Sie es ändern2.3
es istYes
). Der Vorteil dieser Option istpod install
jedoch, dass Sie diese Einstellung jedes Mal automatisch festlegen! Genial. Ich seheSWIFT_VERSION
, dass dies auch bei Obj-C- Projekten der Fall ist . Ich gehe davon aus, dass es keine nachteiligen Auswirkungen gibt.pod install / update
. Diese Lösung macht die Dinge schneller. Sie können Ihre Cocoapods-Version jetzt auch aktualisieren: Dieses Problem sollte ebenfalls behoben werden.Ich habe gerade einen Weg gefunden, das Problem zu beheben.
Gehen Sie zu den Build-Einstellungen des Projekts oder der Bibliothek und setzen Sie das Swift Compiler-Versionsattribut "Legacy Swift Language Version verwenden" von "Nicht angegeben" auf "Ja" oder "NEIN".
quelle
pod install
empfehle ich die Verwendung der obigen Antwort von @Tulleb.Ich habe dieses Problem schon eine Weile ignoriert und in der Zwischenzeit nur an anderen Dingen gearbeitet - ich habe endlich die Lösung für mein Problem gefunden.
Da mein Projekt Objective-C ist, habe ich angenommen, dass einer der von mir verwendeten Pods Swift verwendet. Ich habe jeden Pod überprüft und keiner von ihnen.
Die endgültige Lösung bestand darin, dass mein Core Data-Modell so eingestellt war, dass Code in Swift generiert wird, obwohl ich sie manuell im Menü Datei> Neu> NSManagedObjectSubclass generiert habe. Ich musste es nur auf Objective-C umstellen.
quelle
Dieses Problem ist auch in Xcode-8.1 sichtbar. Wenn wir ein neues Ziel wie Erweiterung oder Widget hinzufügen, wird die Bibliothek eines Drittanbieters mithilfe von Kokopoden in ein neues Ziel integriert. Nach der Pod-Installation . Wir können den gleichen Fehler wie oben sehen.
Ändern Sie die Use Legacy Swift Language-Version in jeder Library Build-Einstellung in
quelle
Wenn Sie Xcode 8 oder höher verwenden
quelle
Fügen Sie den folgenden Code am Ende der Poddatei hinzu.
quelle
Ich arbeite an einem Projekt mit gemischtem Objective-C- und Swift-Code. Ich habe zuvor Swift Version 2.3 verwendet und nach dem Upgrade auf Swift 3 konnte ich das Projekt nicht erstellen. Xcode hat sich mit der genannten Fehlermeldung beschwert.
Anscheinend war in meiner Datei project.pbxproj noch eine veraltete Swift-Version angegeben. Es wurde schnell 3.0.1 angegeben:
Während ich bereits 3.0.2 installiert hatte:
Sooo, ich habe es behoben, indem ich die Swift-Version in der project-pbxproj-Datei geändert habe in:
Der Versionsspezifizierer auf Patch-Ebene scheint zu spezifisch zu sein.
quelle
In meinem Fall muss ich nur die folgenden Dinge tun
Wählen Sie das Projektziel => Gehen Sie zur Build-Einstellung => Suchen Sie nach „Swift Language Version“ => Geben Sie Value die aktuelle Swift-Version
Das ist alles Es hat mein Problem behoben
quelle
Ich habe den gleichen Fehler bekommen. Ich habe versucht, nach "Use Legacy Swift Language Version" zu suchen, aber nicht gefunden. Ich benutze Xcode 8.3.3 Nachdem ich zu viel gesurft und herumgearbeitet habe, habe ich diese Lösung gefunden, und das hat bei mir funktioniert.
quelle
Setzen Sie "Use Legacy Swift Language Version" auf "YES", wenn Sie eine alte Version von Swift in Ihrem Projekt oder einen schnellen Drittanbieter verwenden. "Nein", wenn Ihr Projekt auf die aktuelle schnelle Version aktualisiert wurde. Wenn Sie Ihre schnelle Version nicht konfigurieren, muss das Pod Framework dies nach jedem Update und jeder Installation angeben.
quelle
Ich musste tatsächlich nach "Legacy Swift" suchen, um es von "nicht angegeben" in "Ja" ändern zu können. Als ich einfach zu dem oben beschriebenen Abschnitt gescrollt habe, konnte ich es nicht ändern. Ich hoffe das wird jemandem helfen.
quelle
Mein Projekt ist in Swift geschrieben. Ich habe den gleichen Fehler mit
fastlane
. Was passierte war, dass mein Xcode automatisch aktualisiert wurde, sodass ich mein Projekt auf Swift 3.0 aktualisieren musste. Ich habe eine Menge Fehler. Das Reparieren und Debuggen nahm zu viel Zeit in Anspruch und es hat sich in diesem Moment nicht gelohnt. Deshalb habe ich beschlossen, eine ältere Version von Xcode zu installieren. Mein Code wurde auf 2.3 zurückgesetzt. Dannfastlane beta
funktionierte es nicht mehr. Es stellte sich heraus, dass ich das Befehlszeilen-Tool auf 7.3 setzen musste.quelle
Ich hatte das gleiche Problem und löste es wie folgt:
In Projekt> Build-Einstellungen:
Always Embed Swift Standard Libraries = $(inherited)
Use Legacy Swift Language Version = YES
Dann in meinem Podfile:
config.build_settings['SWIFT_VERSION'] = '3.0'
Mit diesen drei Einstellungen wurden alle Warnungen entfernt und ich konnte ordnungsgemäß kompilieren.
Der dunkelste und tatsächlich am weitesten fortgeschrittene Kompilierungsprozess war das Ändern der SWIFT_VERSION im Podfile von 3 auf 3.0, wie hier vorgeschlagen .
quelle
Ab XCode 8 können Sie Swift 2.3 verwenden, obwohl XCode 8 Swift 3.x als Standardversion von Swift verwendet. Um Swift 2.3 zu verwenden, aktivieren Sie einfach das Flag "Legacy Swift Language Version verwenden" in der Build-Einstellung auf "YES". XCode verwendet dann Swift 2.3 für dieses Projektziel.
quelle
Bevor Sie komplizierte Lösungen ausprobieren, finden Sie hier eine grundlegende Überprüfung, die Sie durchführen müssen, wenn Sie Cocoapods noch nicht kennen und dieses Problem auftritt.
Möglicherweise müssen Sie:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For swift pod "MyPod" # Your mean pod :)
pod install
erneut ausVielleicht ist es nur das.
Wenn nicht, kannst du oben gehen ;-)
quelle
Ich hatte das gleiche Problem nach dem Update auf xcode 8.3.2, aber die Option "Legacy Swift Language verwenden" war weg. Dies scheint die Option zu sein, die Sie jetzt ändern können:
Verwendet dieses Update mit Alamofire und anderen Bibliotheken und alles funktioniert in Ordnung.
quelle
Gehen Sie zu Project Build Setting für Project und Target Do unter zwei.
Zum neuesten wechseln
Swift 3
.Fehler behoben.
Wenn Ihre Fehlerbehebung behoben ist, gefällt sie Ihnen bitte.
quelle
In Xcode 9 Beta. Gehen Sie zu Projekteinstellungen, Build-Einstellungen und suchen Sie nach Swift Language Version. In Xcode 9 müssen Sie angeben, ob Sie Swift 3.2 oder Swift 4 verwenden.
quelle
Wenn Sie ändern,
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
umNO
immer noch nicht zu arbeiten, liegt es am Xcode-Problem, nicht an Ihrem Problem. Führen Sie die folgenden Schritte aus:1.Ändern Sie die
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
Eigenschaft so, dass sie sichYES
auf dem Warnziel befindet2. Dann wird in der linken Leiste eine Warnung angezeigt, die empfiehlt, auf Swift 3.0 zu wechseln
3. Dann wechseln Sie zurück zu
NO
. Erstellen Sie das Projekt neu, der xcode erkennt endlich Ihre Änderung anNO
!Problem in diesem Fall gelöst!
quelle