wake-up-neo.com

Xcode 9 Swift-Sprachversion (Swift_VERSION)

Ich habe xcode kürzlich auf Version 9 aktualisiert. Vorher in Xcode 8.x, wenn ich pod update verwende, wird mir ein Aktualisierungscode angezeigt, um den Code in Swift 3 zu konvertieren und die Fehler zu beheben. Aber jetzt gibt es diesen Fehler:

Die Build-Einstellung "Swift Language Version" (Swift_VERSION) muss festgelegt werden auf einen unterstützten Wert für Ziele, die Swift verwenden. Diese Einstellung kann .__ sein. im Build-Einstellungen-Editor festlegen.

Für diesen Fehler habe ich Build Settings > Swift Language Version ausprobiert und es war Swift 3.2 . Aber da der Update-Aufruf einige der Pods wie Alamofire neu installiert hat, heißt es, Xcode 8.x zu installieren, um den Code nach Swift 3 zu konvertieren Müssen Sie eine zusätzliche Version mit dem neuesten Xcode installieren? Wenn ja, wie kann ich Xcode 8 mit Xcode 9 installieren? 

81
Chaudhry Talha

Beantworten Sie Ihre Frage:
Sie können Xcode 8.x von Apple Download Portal herunterladen oder Xcode 8.3.3 herunterladen (oder sehen Sie: Wo Sie ältere Versionen von Xcode herunterladen können, wenn Sie einen Premium-Entwicklerkonto haben ( Apple ID). Sie können Xcode 9 und Xcode 8.x in einem (Mac) System installieren und damit arbeiten. (Stellen Sie sicher, dass Sie Command Line Tools beide Versionen von Xcode unterstützen, um mit Terminal arbeiten zu können (siehe: So installieren Sie 'Command Line Tool' ))


Tipp: So migrieren Sie Ihren Code Xcode 9-kompatible Swift-Versionen (Swift 3.2 oder 4)
Xcode 9 erlaubt nur die Konvertierung/Migration von Swift 3.0 nach Swift 3.2/4.0. Wenn die aktuelle Version von Swift in Ihrem Projekt unter 3.0 liegt, müssen Sie Ihren Code in Swift 3-kompatible Version mit Xcode 8.x migrieren. 

Dies ist eine häufige Fehlermeldung, die Xcode 9 anzeigt, wenn während der Migration die Sprache Swift unter 3.0 erkannt wird.

enter image description here


Swift 3.2 wird von Xcode 9 und Xcode 8 unterstützt.

Projekt ► (Wählen Sie Ihr Projektziel) ► Build-Einstellungen ► (Geben Sie 'Swift' in der Suchleiste ein) Swift-Compiler-Sprache ► Swift-Sprachversion ► Klicken Sie auf Sprachenliste, um sie zu öffnen.

enter image description here



Konvertieren Sie Ihren Quellcode von Swift 2.0 nach 3.2 mit Xcode 8 und fahren Sie dann mit Xcode 9 (Swift 3.2 oder 4) fort. 


Führen Sie die folgenden Schritte aus, um die Migration Ihres Codes zu vereinfachen: (Es hilft Ihnen, in die neueste Version von Swift zu konvertieren, die von Ihrem Xcode Tool unterstützt wird)

Xcode: Menüs: Bearbeiten ▶ Verdeckt ▶ Zur aktuellen Swift-Syntax

enter image description here

147
Krunal

Für Objective C-Projekte, die mit Xcode 8 erstellt wurden und jetzt in Xcode 9 geöffnet werden, wird derselbe Fehler angezeigt, der in der Frage erwähnt wurde.

Um das Problem zu beheben, drücken Sie die + Taste in den Build-Einstellungen und wählen Sie Benutzerdefinierte Einstellungen hinzufügen (siehe Abbildung unten) 

 build setting

Fügen Sie dann in der neuen Zeile Swift_VERSION als Schlüssel und 3.2 als Wert wie unten hinzu. 

 enter image description here

Der Fehler für Objective C-Projekte wird behoben.

46
R. Mohan

Dies kann passieren, wenn Sie einem vorhandenen Projekt Core Data hinzugefügt haben.
Überprüf den:
<Name>/<Name> .xcdatamodeld/<Name> .xcdatamodel/Inhalt
Datei.
Diese Datei enthält einen Eintrag "sourceLanguage", der (standardmäßig) möglicherweise auf "Swift" gesetzt wurde. Ändern Sie es in "Objective-C".

1
digitaldaemon

möglicherweise müssen Sie die Toolchain herunterladen. Dieser Fehler tritt auf, wenn Sie nicht über die richtige Version von Swift Compiler verfügen.

0
dalmate

Ich klicke einfach auf den neuesten Swift-Convert-Button und setze die App-Ziel-Build-Einstellung in Swift-Sprachversion:

Hoffe das wird helfen.

0
Atal Singh

Diese Lösung funktioniert, wenn nichts anderes funktioniert:

Ich verbrachte mehr als eine Woche, um das gesamte Projekt umzusetzen und kam zu einer Lösung unten:

Deaktivieren Sie zunächst die Cocopods-Abhängigkeit vom Projekt und konvertieren Sie das Projekt anschließend auf die neueste Swift-Version.

Gehen Sie zum Projektverzeichnis im Terminal und geben Sie Folgendes ein:

pod deintegrate

Dadurch werden Cocopods aus dem Projekt entfernt und es bleiben keine Spuren von CocoaPods im Projekt zurück. Gleichzeitig werden jedoch der xcworkspace und die Poddateien nicht gelöscht. Es ist in Ordnung, wenn sie anwesend sind.

Jetzt müssen Sie xcodeproj (nicht xcworkspace) öffnen und es treten viele Fehler auf, da Sie in Ihren Hauptprojekten cocoapods-Abhängigkeitsmethoden aufgerufen haben.

Um diese Fehler zu entfernen, haben Sie zwei Möglichkeiten:

  1. Notieren Sie den gesamten Code, den Sie aus der Cocoapods-Bibliothek verwendet haben.
  2. Erstellen Sie eine Wrapper-Klasse mit Dummy-Methoden, die denen der cocopods-Bibliothek ähneln, und rufen Sie sie dann auf.

Sobald alle Fehler behoben sind, können Sie den Code in die neueste Swift-Version konvertieren.

Manchmal, wenn Sie seltsame Fehler bekommen, versuchen Sie, abgeleitete Daten zu bereinigen und versuchen Sie es erneut.

0
HSAM

Ich habe dies gerade in einem Xcode 10 (New) Objective-C-Projekt erhalten, nachdem ich dem Projekt eine Core-Data-Modelldatei hinzugefügt habe.

Ich habe zwei Wege gefunden, um das zu beheben:

  1. Öffnen Sie den Dateiinspektor des Modells (⌥⌘-1) und ändern Sie die Sprache von Swift in Objective-C

  2. Längere und gefährlichere Methode

Das Modell enthält eine "Inhalt" -Datei mit folgender Zeile:

<model type="com.Apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">

In gibt es einen sourceLanguage="Swift"-Eintrag. Ändern Sie es in sourceLanguage="Objective-C" und der Fehler wird behoben.

Um die "Inhalt" -Datei zu finden, klicken Sie mit der rechten Maustaste auf .xcdatamodeld in Xcode und wählen Sie "Im Finder anzeigen". Klicken Sie mit der rechten Maustaste auf die aktuelle (Finder) -Datei und führen Sie "Paketinhalt anzeigen" aus.

Außerdem: Wenn Sie die Sprache des Modells ändern, kann Xcode keine verwalteten Objekt-Unterklassen-Dateien in Swift generieren.

0
nevan king