wake-up-neo.com

Xcode 8 Beta 3 Verwenden Sie das Problem Legacy Swift

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.

199
Bryan

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.

screenshot

33
Bryan

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.

364
Tulleb

Ich habe gerade einen Weg gefunden, das Problem zu beheben.

Wechseln Sie zu den Build-Einstellungen des Projekts oder der Bibliothek und setzen Sie das Attribut Swift Compiler-Version "Use Legacy Swift Language Version" von Unspecified auf Yes oder NO.

enter image description here

118
rockdaswift

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 .

enter image description here

18
Shrawan

Wenn Sie Xcode 8 oder höher verwenden

  1. Gehen Sie zu Build Settings
  2. Suchen Sie nach einer älteren Swift Sprachversion
  3. Ja - Swift 2.3
  4. Nein - Swift 3.0 enter image description here

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
5
Sunil aruru

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.

4
leviathan

In meinem Fall habe ich einfach die folgenden Dinge getan

Wählen Sie das Projekt Target => Gehe zu Build setting => Suche nach "Swift Language Version" => gib Value die aktuelle Swift Version

Das ist alles Es hat mein Problem behoben

Follow This Image

4

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 . enter image description here

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.)
4
Aklesh Rathaur

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.

2
Mountain Man

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. enter image description here

2
yoninja

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.

1
arunjos007

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.

1
kiran

Ich hatte das gleiche Problem nach dem Update auf xcode 8.3.2, aber die Option "Use Legacy Swift Language" war weg. Dies scheint die Option zu sein, die jetzt geändert werden kann: Swift Lang Version

Benutzte dieses Update mit Alamofire und anderen Bibliotheken und alles funktioniert in Ordnung.

1
Jorge Irún

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!

1
Wangdu Lin

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:

  • Öffnen Sie Ihr Podfile erneut
  • Stellen Sie sicher, dass die Zeile für die Plattform nicht mit einem '#' auskommentiert ist. Es sollte nun ungefähr so ​​aussehen:

platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For Swift pod "MyPod" # Your mean pod :)

  • Speichern Sie Ihr Podfile, schließen Sie Xcode und führen Sie pod install erneut aus
  • Öffnen Sie Ihren project.xcworkspace

Vielleicht ist es nur so.

Wenn nicht, kannst du nach oben gehen ;-)

1
Diphaze

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 .

1
Hector Partidas

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.

1
Niall Kehoe