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


115

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

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

このエラーについて私は試してみましたがBuild Settings > Swift Language Version、それはSwift 3.2でしたが、更新呼び出しにより、Alamofireなどのポッドの一部が再インストールされ、Xcode 8.xをインストールしてコードをSwift 3に変換するように指示されているため、最新のXcodeの追加バージョン?はいの場合、Xcode 8をXcode 9と一緒にインストールするにはどうすればよいですか?


派生データを
クリーンアップして

Xcode 8の迅速なバージョンは何ですか?
santhoshkumar 2017

8.3.3だと思います。それは、Xcodeの9の前に最新のものだった
チョードリータルハガム

回答:


181

あなたの質問への回答: プレミアム開発者アカウント(apple id)を持っている場合は、
Xcode 8.xをAppleダウンロードポータルからダウンロードするか、Xcode 8.3.3をダウンロードすることができます(またはXcodeの古いバージョンをダウンロードする場所を参照してください)。Xcode 9とXcode 8.xの両方を単一の(mac)システムにインストールして使用できます。(Command Line Toolsターミナルで作業するには、Xcodeの両方のバージョンをサポートしていることを確認してください(「コマンドラインツール」のインストール方法を参照))


ヒント:あなたのコードのXcode 9つの互換スウィフトのバージョン(スウィフト3.2または4)に移行する方法
のXcode 9からの変換/移行を可能にSwift 3.0するSwift 3.2/4.0だけ。したがって、プロジェクトのSwift言語の現在のバージョンが3.0より前の場合は、Xcode 8.xを使用してSwift 3互換バージョンのコードを移行する必要があります。

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

ここに画像の説明を入力してください


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

プロジェクト►(プロジェクトターゲットの選択)►ビルド設定►(検索バーに「swift」と入力)Swiftコンパイラー言語►Swift言語バージョン►言語リストをクリックして開きます。

ここに画像の説明を入力してください



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


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

Xcode:メニュー:編集▶コバート▶現在のSwift構文へ

ここに画像の説明を入力してください


9
今だけ(2018年12月)いくつかのSwift 2コードをまき散らしているためにここに来た場合、Xcode 8がMojaveで実行されないことを知ってがっかりします。
Bugloaf 2018

53

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

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

ビルド設定

次に、作成された新しい行に、以下のようにSWIFT_VERSIONキーと3.2値として追加します。

ここに画像の説明を入力してください

それは客観的なcプロジェクトのエラーを修正します。


2
これは私を助けました。ありがとう。
Andreas Kraft

9
CocoaPodsでこの問題が発生している場合は、このビルド設定をpods.xcodeprojectセクションに追加する必要がある場合があります。
スチュワートマクドナルド

1
これは私にとってはうまくいきました。ビルド設定の 'ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'を '$(inherited)'に変更する必要もありました
F-1

1
2ヶ月後にもう一度ありがとう

1
ソリューションに感謝します。
user366584

4

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

私はこれを修正する2つの方法を見つけました:

  1. 簡単な方法:コアデータモデルのファイルインスペクターを開き(- 1)、言語をSwiftからObjective-Cに変更します。

コアデータモデルの言語を変更する

  1. より長く危険な方法

モデルには、次の行を含む「コンテンツ」ファイルが含まれています。

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

sourceLanguage="Swift"エントリーがあります。に変更すればsourceLanguage="Objective-C"エラーはなくなります。

「コンテンツ」ファイルを見つけるには.xcdatamodeld、Xcode でを右クリックし、「Finderに表示」を実行します。実際の(Finder)ファイルを右クリックして[パッケージの内容を表示]を実行します

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


1

これは、既存のプロジェクトにコアデータを追加したときに発生する可能性があります。
:チェック
<名前> / <名前> .xcdatamodeld / <名前> .xcdatamodel /コンテンツ
ファイルを。
このファイルには、(デフォルトで)「Swift」に設定されている可能性のある「sourceLanguage」というエントリが含まれています。「Objective-C」に変更します。


0

Swiftの最新の変換ボタンをクリックして、アプリのターゲットビルド設定を設定します。Swift言語バージョン:swift 4.0、

これがお役に立てば幸いです。


0

このソリューションは、他に何も機能しない場合に機能します。

プロジェクト全体の変換に1週間以上費やし、以下の解決策を見つけました:

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

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

pod deintegrate

これにより、プロジェクトからココポッドが統合解除され、プロジェクトにCocoaPodsの痕跡は残りません。ただし、同時に、xcworkspaceとpodfilesは削除されません。それらが存在していても問題ありません。

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

これらのエラーを削除するには、2つのオプションがあります。

  1. cocoapodsライブラリから使用したすべてのコードをコメント化します。
  2. cocopodsライブラリと同様のダミーメソッドを持つラッパークラスを作成し、それを呼び出します。

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

奇妙なエラーが発生する場合は、派生データをクリーンアップして、もう一度試してください。


0

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


-3

私の場合、2つの警告を除いて、ビルド設定で迅速なバージョンを2.xから4.0に直接変更した後、すべての警告が消えました。

これらの警告はmyprojectnameTestsmyprojectnameUITestsフォルダに関連しています。私は気づかなかったし、Xcode 7からXcode 9への直接の移民に関連していると思ったので、この問題を解決できないので、見逃したXcode 8バージョンをインストールするべきだと思った。

私の場合、これらのフォルダを削除してすべての警告が消えましたが、このフォルダを再作成してこれを使用して含めることができます:

file > new > target > (uitest or unittest extensions)

この記事を使用してテストケースを作成します。https//developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/04-writing_tests.html


そして誰かが私の間違いは何であるかを教えてくれます!?
iman kazemayni 2018

2
私は個人的にこれに反対投票するつもりはありませんが、あなたの回答に問題はありませんが、最適な場所はOPの質問にコメントすることです。また、stackoverflow.com / help / how- to-answerを参照して、質問に答える正しい方法を考え出すこともできます。
grassyburrito
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.