Ich habe kürzlich xcode auf Version 9 aktualisiert. Vorher pod update
zeigt mir Xcode 8.x, wann immer ich es verwende, einen Aktualisierungscode, um den Code in Swift 3 zu konvertieren und damit die Fehler zu beheben. Aber jetzt gibt es mir diesen Fehler:
Die Build-Einstellung „Swift Language Version“ (SWIFT_VERSION) muss für Ziele, die Swift verwenden, auf einen unterstützten Wert festgelegt werden. Diese Einstellung kann im Build-Einstellungseditor festgelegt werden.
Für diesen Fehler habe ich es versucht Build Settings > Swift Language Version
und es war Swift 3.2. Da der Update-Aufruf jedoch einige der Pods wie Alamofire neu installiert hat und Xcode 8.x installiert werden muss, um den Code in Swift 3 zu konvertieren, muss ich einen installieren zusätzliche Version mit dem neuesten Xcode? Wenn ja, wie kann ich dann Xcode 8 mit Xcode 9 installieren?
Antworten:
Antwort auf Ihre Frage:
Sie können Xcode 8.x vom Apple Download Portal oder Xcode 8.3.3 herunterladen (oder siehe: Wo Sie eine ältere Version von Xcode herunterladen können ), wenn Sie ein Premium-Entwicklerkonto (Apple-ID) haben. Sie können sowohl Xcode 9 als auch Xcode 8.x in einem einzigen (Mac) System installieren und damit arbeiten. (Stellen Sie sicher, dass Sie
Command Line Tools
beide Xcode-Versionen unterstützen, um mit dem Terminal arbeiten zu können (siehe: Installieren des 'Befehlszeilen-Tools' ))Tipp: So migrieren Sie Ihren Code Xcode 9-kompatible Swift-Versionen (Swift 3.2 oder 4)
Xcode 9 ermöglicht nur die Konvertierung / Migration von
Swift 3.0
nachSwift 3.2/4.0
. Wenn die aktuelle Version der Swift-Sprache Ihres Projekts unter 3.0 liegt, müssen Sie Ihren Code in einer Swift 3-kompatiblen Version mit Xcode 8.x migrieren.Dies ist eine häufige Fehlermeldung, die Xcode 9 während der Migration anzeigt, wenn die Swift-Sprache unter 3.0 identifiziert wird.
Swift 3.2 wird von Xcode 9 und Xcode 8 unterstützt.
Konvertieren Sie Ihren Quellcode mit Xcode 8 von Swift 2.0 in 3.2 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: (Dies hilft Ihnen bei der Konvertierung in die neueste Version von Swift, die von Ihrem Xcode-Tool unterstützt wird.)
quelle
Bei Objective C-Projekten, die mit Xcode 8 erstellt wurden und jetzt in Xcode 9 geöffnet werden, wird der gleiche Fehler wie in der Frage angegeben angezeigt.
Um dies zu beheben, klicken Sie in den Build-Einstellungen auf die Schaltfläche + und wählen Sie Benutzerdefinierte Einstellungen hinzufügen (siehe Abbildung unten)
Fügen Sie dann in der neu erstellten Zeile
SWIFT_VERSION
als Schlüssel und3.2
als Wert wie unten hinzu.Der Fehler für objektive c-Projekte wird behoben.
quelle
Ich habe dies gerade erhalten, nachdem ich ein neues Objective-C-Projekt in Xcode 10 erstellt habe, nachdem ich dem Projekt eine Core Data-Modelldatei hinzugefügt habe.
Ich habe zwei Möglichkeiten gefunden, dies zu beheben:
Das Modell enthält eine "Inhalts" -Datei mit dieser Zeile:
Da drin ist ein
sourceLanguage="Swift"
Eintrag. Ändern Sie es insourceLanguage="Objective-C"
und der Fehler verschwindet.Um die "Inhalts" -Datei zu finden, klicken Sie mit der rechten Maustaste auf den
.xcdatamodeld
in Xcode und führen Sie "Im Finder anzeigen" aus. Klicken Sie mit der rechten Maustaste auf die aktuelle (Finder-) Datei und führen Sie "Paketinhalt anzeigen" aus.Außerdem: Durch Ändern der Modellsprache wird verhindert, dass Xcode in Swift Unterklassendateien für verwaltete Objekte generiert.
quelle
Dies kann passieren, wenn Sie einem vorhandenen Projekt Kerndaten hinzugefügt haben.
Überprüfen Sie die Datei :
<Name> / <Name> .xcdatamodeld / <Name> .xcdatamodel / content
.
Diese Datei enthält einen Eintrag "sourceLanguage", der (standardmäßig) auf "Swift" gesetzt wurde. Ändern Sie es in "Objective-C".
quelle
Ich klicke einfach auf die neueste Schaltfläche für die schnelle Konvertierung und setze die Einstellung für die App-Zielerstellung -> Schnelle Sprachversion: schnell 4.0,
Hoffe das wird helfen.
quelle
Diese Lösung funktioniert, wenn nichts anderes funktioniert:
Ich habe mehr als eine Woche damit verbracht, das gesamte Projekt zu konvertieren, und bin zu einer Lösung gekommen:
De-Integration der Cocopods-Abhängigkeit vom Projekt und anschließende Konvertierung des Projekts in die neueste schnelle Version.
Gehen Sie im Terminal zum Projektverzeichnis und geben Sie Folgendes ein:
Dadurch werden Cocopods aus dem Projekt entfernt und es bleiben keine Spuren von CocoaPods im Projekt zurück. Gleichzeitig werden der xcworkspace und die Poddateien jedoch nicht gelöscht. Es ist in Ordnung, wenn sie anwesend sind.
Jetzt müssen Sie xcodeproj (nicht xcworkspace) öffnen und es werden viele Fehler angezeigt, da Sie in Ihren Hauptprojekten Cocoapods-Abhängigkeitsmethoden aufgerufen haben.
Um diese Fehler zu beseitigen, haben Sie zwei Möglichkeiten:
Sobald alle Fehler behoben sind, können Sie den Code in die neueste schnelle Version konvertieren.
Wenn Sie seltsame Fehler erhalten, versuchen Sie manchmal, abgeleitete Daten zu bereinigen, und versuchen Sie es erneut.
quelle
Möglicherweise müssen Sie die Toolchain herunterladen. Dieser Fehler tritt auf, wenn Sie nicht über die richtige Version des Swift-Compilers verfügen.
quelle
In meinem Fall verschwanden alle Warnungen, nachdem ich die schnelle Version in den Build-Einstellungen direkt von 2.x auf 4.0 geändert hatte, mit Ausnahme von zwei Warnungen.
Diese Warnung bezog sich auf
myprojectnameTests
undmyprojectnameUITests
Ordner. Ich habe es nicht bemerkt und dachte, dass es sich um eine direkte Einwanderung von Xcode 7 nach Xcode 9 handelt. Ich dachte, ich könnte dieses Problem nicht lösen und sollte die verpasste Xcode 8-Version installieren.In meinem Fall habe ich diese Ordner gelöscht und alle Warnungen sind verschwunden, aber Sie können diesen Ordner neu erstellen und enthalten Folgendes:
file > new > target > (uitest or unittest extensions)
Verwenden Sie diesen Artikel zum Erstellen von Testfällen: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html
quelle