Ich habe ein Objective-C-Projekt in Xcode 8 Beta 3. Seit der Aktualisierung wird bei jedem Buildversuch die folgende Fehlermeldung angezeigt:
"Use Legacy Swift Language Version" (Swift_VERSION) muss für Ziele, die Swift verwenden, korrekt konfiguriert sein. Verwenden Sie das Menü [Bearbeiten> Konvertieren> In aktuelles Swift Syntax…], um eine Swift Version auszuwählen, oder verwenden Sie den Editor für Erstellungseinstellungen, um die Erstellungseinstellung 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 Beta 2. Irgendwelche Ideen, wie ich dieses Problem beheben könnte?
Ich sollte auch erwähnen, dass ich OSX 10.12 Beta 2 verwende.
Ich habe dieses Problem 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 mir gedacht, dass einer der Pods, die ich verwende, Swift ist. Ich habe jeden Pod überprüft und keiner von ihnen.
Die letzte Lösung war, dass mein Core Data-Modell so eingestellt war, dass Code in Swift generiert wurde, obwohl ich sie manuell im Menü Datei> Neu> NSManagedObjectSubclass generiert habe. Ich musste es nur auf Objective-C umstellen.
Wenn Sie CocoaPods verwenden und möchten, dass es jedes Mal, wenn Sie einen pod install
ausführen, automatisch repariert wird, können Sie diese Zeilen an das Ende Ihrer Poddatei anfügen:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '3.0'
end
end
end
BEARBEITEN: Dieses Problem ist jetzt behoben, wenn Sie CocoaPods 1.1.1 oder höher verwenden. Vergessen Sie nicht, die Einstellung ALWAYS_EMBED_Swift_STANDARD_LIBRARIES
von Ihren Hauptprojektzielen zu entfernen.
Dieses Problem ist auch in Xcode-8.1 sichtbar. Wenn wir ein neues Target wie Extension oder Widget hinzufügen, wird die Third Party Library mit Hilfe von Cocopods in das neue Target integriert. Nach Pod installieren . Wir können den gleichen Fehler wie oben sehen.
Ändern Sie die Einstellung Use Legacy Swift Language Version in jeder Library Build Setting zu
Nein .
Fügen Sie den folgenden Code am Ende der Poddatei hinzu.
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['Swift_VERSION'] = '3.0'
end
end
end
Ich arbeite an einem Projekt mit gemischtem Objective-c- und Swift-Code, den ich zuvor mit Swift Version 2.3 verwendet habe, und nach dem Upgrade auf Swift 3 war dies nicht möglich Bauen Sie das Projekt. Xcode hat sich mit der genannten Fehlermeldung beschwert.
Anscheinend war in meiner Datei project.pbxproj noch eine veraltete Version von Swift angegeben. Es wurde Swift 3.0.1 angegeben:
Swift_VERSION = 3.0.1;
Während ich bereits 3.0.2 installiert hatte:
$ xcrun Swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-Apple-macosx10.9
Sooo, ich habe das Problem behoben, indem ich die Swift -Version in der project-pbxproj -Datei folgendermaßen geändert habe:
Swift_VERSION = 3.0;
Scheint, dass der Patch-Level-Versionsspezifizierer zu spezifisch war.
Ich habe den gleichen Fehler bekommen. Ich habe nach "Use Legacy Swift Language Version" gesucht, aber nicht gefunden. Ich benutze Xcode 8.3.3 Nachdem ich zu viel gesurft und herumgearbeitet habe, habe ich diese Lösung gefunden und sie hat bei mir funktioniert .
Here are the steps.
1=> select your target from Xcode
2=> go to build setting
3=> search for "Swift Language Version"
4=> change it to Swift 3. (or accordingly.)
setzen Sie "Use Legacy Swift Language Version" auf "YES", wenn Sie eine alte Version von Swift in Ihrem Projekt oder einer anderen Swift Drittpartei verwenden. "Nein", wenn Ihr Projekt auf die aktuelle Swift Version aktualisiert wurde. Wenn Sie Ihre Swift -Version nicht konfigurieren, muss dies nach jedem Update und jeder Installation im Pod-Framework angegeben werden.
Ich musste tatsächlich nach "Legacy Swift" suchen, um es von "nicht angegeben" in "Ja" ändern zu können. Als ich einfach zum oben beschriebenen Abschnitt gescrollt habe, konnte ich es nicht ändern. Ich hoffe das hilft jemandem.
Mein Projekt ist in Swift geschrieben. Ich habe den gleichen Fehler mit fastlane
. Mein Xcode wurde automatisch aktualisiert, sodass ich mein Projekt auf Swift 3.0 aktualisieren musste. Ich habe eine Menge Fehler. Das Reparieren und Debuggen hat zu viel Zeit in Anspruch genommen und es hat sich in diesem Moment nicht gelohnt. Deshalb habe ich beschlossen, eine ältere Version von Xcode zu installieren. Meinen Code auf 2.3 zurückgesetzt. Dann funktionierte fastlane beta
nicht mehr. Es stellte sich heraus, dass ich das Command Line Tool auf 7.3 einstellen musste.
Ab XCode 8 können Sie Swift 2.3 verwenden, obwohl XCode 8 Swift 3.x als Standardversion Swift verwendet. Um Swift 2.3 zu verwenden, schalten Sie einfach das Flag Use Legacy Swift Sprachversion auf YES von Build Setting ein, dann verwendet XCode Swift 2.3 für dieses Projektziel.
Gehen Sie zu Project Build Setting für project und Target do below two.
ALWAYS_EMBED_Swift_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version = Swift 3
Zum neuesten Swift 3
wechseln.
Fehler behoben.
Wenn Ihr Fehler behoben ist, gefällt es Ihnen.
Wenn Sie ALWAYS_EMBED_Swift_STANDARD_LIBRARIES
in NO
ändern, funktioniert dies immer noch nicht, da das Problem mit dem xcode nicht Ihr Problem ist. Führen Sie die folgenden Schritte aus:
1.Ändern Sie die Eigenschaft ALWAYS_EMBED_Swift_STANDARD_LIBRARIES
in YES
für das Warnziel
2.dann wird in der linken Leiste eine Warnung angezeigt, die Ihnen empfiehlt, zu Swift 3.0 zu wechseln
3. Dann wechseln Sie zurück zu NO
. Erstellen Sie das Projekt neu, der xcode erkennt schließlich Ihre Änderung an NO
!
Problem in diesem Fall gelöst!
Bevor Sie komplizierte Lösungen ausprobieren, sollten Sie zunächst überprüfen, ob Cocoapods für Sie neu ist und ob dieses Problem vorliegt.
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 so.
Wenn nicht, kannst du nach oben gehen ;-)
Ich hatte das gleiche Problem und löste es folgendermaßen:
In Projekt> Einstellungen erstellen:
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.
Das dunkelste und was tatsächlich Fortschritte beim Kompilieren gebracht hat, war die Änderung der Swift_VERSION im Podfile von 3 auf 3.0, wie vorgeschlagen hier .
In Xcode 9 Beta. Gehen Sie zu Projekteinstellungen, Einstellungen erstellen und suchen Sie nach Swift Sprachversion. In Xcode 9 müssen Sie angeben, ob Sie Swift 3.2 oder Swift 4 verwenden.