web-dev-qa-db-ja.com

Xcode 9のSwift言語バージョン(Swift_VERSION)

最近xcodeをバージョン9に更新しました。それ以前は、pod updateを実行するために使用していたXcode 8.xでは、コードをSwift 3に変換してエラーを解決するための更新コードが表示されます。しかし今、それは私にこのエラーを与えています:

Swiftを使用するターゲットでは、「Swift Language Version」(Swift_VERSION)ビルド設定をサポートされている値に設定する必要があります。この設定はビルド設定エディタで設定できます。

このエラーに対して私はBuild Settings > Swift Language Versionを試してみました、そしてそれはSwift 3.2でした。しかし、更新呼び出しがAlamofireのようなポッドのいくつかを再インストールし、Swift 3にコードを変換するためにXcode 8.xをインストールするように言うので最新のXcodeの追加バージョン?もしそうなら、どうやってXcode 8とXcode 9をインストールできますか?

94
Chaudhry Talha

あなたの質問への回答:
Xcode 8.xを Apple Download Portalからダウンロードできます または Xcode 8.3.3をダウンロード (または: Xcodeの古いバージョンのダウンロード先 )プレミアムデベロッパーアカウント(アップルID)。 Xcode 9とXcode 8.xの両方を単一の(Mac)システムにインストールして作業することができます。 (端末で作業するために、Command Line Toolsが両方のバージョンのXcodeをサポートしていることを確認してください(参照: 'Command Line Tool'のインストール方法 ))


ヒント:コードを移行するにはXcode 9互換のSwiftバージョン(Swift 3.2または4)
Xcode 9では、Swift 3.0からSwift 3.2/4.0への変換/移行のみが許可されています。あなたのプロジェクトのSwift言語の現在のバージョンが3.0以下の場合は、Xcode 8.xを使用してSwift 3互換バージョンにコードを移行する必要があります。

これは、移行中にXcode 9が3.0未満のSwift言語を識別した場合に表示される一般的なエラーメッセージです。

enter image description here


Swift 3.2はXcode 9とXcode 8の両方でサポートされています。

プロジェクト►(プロジェクトのターゲットを選択)►ビルド設定►(検索バーに 'Swift'と入力)Swift Compiler Language►Swift Language Version►Languageリストをクリックして開きます。

enter image description here



Xcode 8を使用してソースコードをSwift 2.0から3.2に変換してからXcode 9(Swift 3.2または4)に進みます。


コードをより簡単に移行するには、次の手順に従います。(XcodeツールでサポートされているSwiftの最新バージョンに変換するのに役立ちます)

Xcode:メニュー:編集▶隠し▶現在のスウィフト構文へ

enter image description here

161
Krunal

Xcode 8を使用して作成され、現在Xcode 9で開かれているObjective Cプロジェクトでは、質問で述べたのと同じエラーが表示されています。

これを修正するには、[ビルド設定]の[+]ボタンを押して、下の図に示すように[ユーザー定義設定の追加]を選択します。

build setting

次に、作成した新しい行に、キーとしてSwift_VERSIONを、値として3.2を次のように追加します。

enter image description here

Objective Cプロジェクトのエラーを修正します。

50
R. Mohan

このプロジェクトにCore Dataモデルファイルを追加した後、Xcode 10で新しいObjective-Cプロジェクトを作成した後にこれを得ました。

これを修正する方法は2つあります。

  1. 簡単な方法:Core DataモデルのFile Inspectorを開きます( - 1)言語をSwiftからObjective-Cに変更します。

Change Core Data model language

  1. より長くより危険な方法

モデルには次の行を含む "contents"ファイルが含まれています。

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

にはsourceLanguage="Swift"エントリーがあります。 sourceLanguage="Objective-C"に変更するとエラーは消えます。

「contents」ファイルを見つけるには、Xcodeの.xcdatamodeldを右クリックして「Show in Finder」を実行します。実際の(Finder)ファイルを右クリックして「パッケージの内容を表示する」を実行してください。

また、モデルの言語を変更すると、XcodeはSwiftで管理オブジェクトサブクラスファイルを生成できなくなります。

2
nevan king

これは、既存のプロジェクトにCore Dataを追加したときに起こります。
以下を確認してください。
<名前>/<名前> .xcdatamodeld/<名前> .xcdatamodel/contents
ファイル。
このファイルは(デフォルトで) "Swift"に設定されているかもしれないエントリ "sourceLanguage"を含んでいます。 "Objective-C"に変更してください。

1
digitaldaemon

ツールチェーンをダウンロードする必要があるかもしれません。このエラーは、Swiftコンパイラの正しいバージョンがない場合に発生します。

0
dalmate

最新のSwift convertボタンをクリックして、App target build setting-> Swift言語バージョンを設定します。Swift 4.0、

これが役立つことを願っています。

0
Atal Singh

この解決策は、他に何も機能しない場合に機能します。

プロジェクト全体を変換するのに1週間以上かかり、以下の解決策になりました。

まず、プロジェクトからのcocopods依存関係を解除してから、プロジェクトを最新のSwiftバージョンに変換し始めます。

ターミナルのプロジェクトディレクトリに移動して、次のように入力します。

pod deintegrate

これにより、プロジェクトからのココポッドの統合が解除され、プロジェクト内にCocoaPodの痕跡は残りません。しかし同時に、それはxcworkspaceとpodfilesを削除しません。彼らが存在していても大丈夫です。

(xcworkspaceではなく)xcodeprojを開く必要があります。メインプロジェクトでcocoapods依存メソッドを呼び出したため、多くのエラーが発生します。

そのため、これらのエラーを取り除くには2つの選択肢があります。

  1. あなたがcocoapodsライブラリから使ったすべてのコードをコメントアウトしてください。
  2. Cocopodsライブラリに似たダミーメソッドを持つラッパークラスを作成して呼び出します。

すべてのエラーが削除されたら、コードを最新のSwiftバージョンに変換できます。

あなたが奇妙なエラーに遭遇しているなら時々それから派生データをきれいにすることを試みてそしてもう一度やり直してください。

0
HSAM