web-dev-qa-db-ja.com

Xcode 8 Beta 3 Use Legacy Swiftの問題

Xcode 8 Beta 3にObjective-Cプロジェクトがあります。アップデートしてからビルドしようとすると、次のようなエラーメッセージが表示されます。

Swiftを使用するターゲットには、「Use Swacy Language Version」(Swift_VERSION)を正しく設定する必要があります。 [編集]> [変換]> [現在のSwift構文へ...]メニューを使用してSwiftのバージョンを選択するか、ビルド設定エディタを使用して直接ビルド設定を行います。

誰かがこれに遭遇しましたか?これはObjective-Cプロジェクトなので、Swiftを設定するためのビルド設定はありません。私はまた、プロジェクトの依存関係やCocoaPodがSwiftを使っていないことを確認しました。私が持っている唯一の解決策はBeta 2を使用することです。この問題を解決するためのアイデアはありますか?

私はOSX 10.12 Beta 2を実行していることにも言及する必要があります。

198
Bryan

私は今しばらくこの問題を無視していて、その間に他のものに取り組んでいます - 私はついに私の問題の解決策を見つけました。

私のプロジェクトはObjective-Cなので、私が使用しているPodの1つがSwiftを使用しているのではないかと思いました。

最後の解決策は、File> New> NSManagedObjectSubclassメニューで手動でコードを生成していましたが、私のCore DataモデルはSwiftでコードを生成するように設定されていました。私がしなければならなかったのはそれをObjective-Cに切り替えることだけでした。

screenshot

33
Bryan

CocoaPodを使用していて、pod installを実行するたびに自動的に修正されるようにしたい場合は、Podfileの最後に次の行を追加します。

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

編集:CocoaPods v1.1.1以降を使用している場合、この問題は修正されました。あなたのメインプロジェクトターゲットからALWAYS_EMBED_Swift_STANDARD_LIBRARIES設定を削除することを忘れないでください。

364
Tulleb

私はちょうどそれを修正する方法を見つけました。

プロジェクトまたはライブラリのビルド設定に移動し、Swift Compiler Version属性の[Use Legacy Swift Language Version]をUnspecifiedからYesまたはNOに設定します。

enter image description here

118
rockdaswift

この問題はXcode-8.1でも見られます。 ExtensionやWidgetなどの新しいターゲットを追加すると、cocopodsの助けを借りてサードパーティのライブラリが新しいターゲットに統合されます。 Podインストール後 。上記と同じエラーに直面する可能性があります。

すべてのライブラリビルド設定で Use Legacy Swift Language Version を次のように変更します。

いいえ

enter image description here

18
Shrawan

Xcode 8以降を使用している場合

  1. ビルド設定に進む
  2. 従来のSwift言語バージョンを使用する
  3. はい - Swift 2.3
  4. いいえ - Swift 3.0 enter image description here

Podfileの最後に以下のコードを追加してください。

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

私は以前Swiftバージョン2.3を使用していましたが、Swift 3にアップグレードした後で目的のcとSwiftのコードが混在したプロジェクトに取り組んでいますが、プロジェクトをビルドできませんでした。 Xcodeは上記のエラーメッセージを訴えました。

どうやら、私のproject.pbxprojファイルで指定された古いSwiftバージョンがまだいくつかありました。 Swift 3.0.1が指定されていました。

Swift_VERSION = 3.0.1;

一方、私はすでに3.0.2をインストールしています。

$ xcrun Swift -version
Apple Swift version 3.0.2 (swiftlang-800.0.63 clang-800.0.42.1)
Target: x86_64-Apple-macosx10.9

うーん、私はproject-pbxprojファイルのSwiftバージョンを次のように変更することでそれを修正した。

Swift_VERSION = 3.0;

パッチレベルのバージョン指定子が具体的すぎたようです。

4
leviathan

私の場合は、次のことをしているだけです。

プロジェクトを選択します。Target => Build setting => Swift Language Versionを検索します。=>現在のSwiftのバージョンをValueにします。

それは私の問題を修正しました

Follow This Image

4

私は同じエラーを受けました。 "Use Legacy Swift Language Version"を検索しようとしましたが見つかりませんでした。 私はXcode 8.3.3を使っています サーフィンしすぎてこの解決策を見つけたところ、私にはうまくいきました。 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

プロジェクトまたは他のSwiftサードパーティで古いバージョンのSwiftを使用している場合は、[Use Legacy Swift Language Version]を[YES]に設定します。プロジェクトが現在のSwiftバージョンに更新されている場合は「いいえ」。 Swiftのバージョンを設定しない場合は、アップデートとインストールのたびに、Podフレームワークでこれを指定する必要があります。

私は実際にそれを未指定から "はい"に変更できるようにするために "レガシースウィフト"の検索をしなければなりませんでした。私が単に上記のセクションにスクロールダウンしたとき、私はそれを変更することができませんでした。これが誰かに役立つことを願っています。

2
Mountain Man

私のプロジェクトはSwiftで書かれています。 fastlaneでも同じエラーになります。何が起こったのか私のXcodeが自動更新されたので、私は自分のプロジェクトをSwift 3.0に更新しなければなりませんでした。大量のエラーが発生しました。修正とデバッグには時間がかかりすぎたので、その時点では価値がなかったので、古いバージョンのXcodeをインストールすることにしました。私のコードを2.3に戻しました。それからfastlane betaはもう働いていませんでした。結局のところ、私はコマンドラインツールを7.3に設定する必要がありました。 enter image description here

2
yoninja

XCode 8以降は、XCode 8がデフォルトのSwiftバージョンとしてSwift 3.xを使用していても、Swift 2.3を使用できます。 Swift 2.3を使用するには、ビルド設定からフラグUse Legacy Swift Language VersionをYESにするだけで、XCodeはそのプロジェクトターゲットにSwift 2.3を使用します。

1
arunjos007

プロジェクトとターゲットのプロジェクトビルド設定に進みます2以下。

ALWAYS_EMBED_Swift_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version  = Swift 3

最新のSwift 3に変更してください。

エラーが解決しました。

エラーが解決したら、どうぞ。

1
kiran

Xcode 8.3.2にアップデートした後も同じ問題が発生しましたが、[Use Legacy Swift Language]オプションはなくなりました。これは今変更するオプションのようです: Swift Lang Version

Alamofireや他のライブラリでこの修正を使用しましたが、すべて問題なく動作します。

1
Jorge Irún

ALWAYS_EMBED_Swift_STANDARD_LIBRARIESNOに変更してもまだ動作しない場合は、xcodeの問題であり、問​​題ではありません。以下の手順を実行します。

1.警告ターゲットでALWAYS_EMBED_Swift_STANDARD_LIBRARIESプロパティをYESに変更します

2.theそれはあなたがSwift 3.0に変更することをお勧めする左バーに警告を表示します

3.次にNOに戻ります。プロジェクトを再ビルドすると、xcodeはNOへの変更を最終的に検出します。

この場合、問題は解決しました。

1
Wangdu Lin

複雑な解決策を試す前に、Cocoapodに慣れておらず、この問題が発生している場合に必要な基本的な確認事項を示します。

あなたがする必要があるかもしれません:

  • Podfileをもう一度開きます
  • Platformの行が '#'でコメントアウトされていないことを確認してください。これはようやく次のようになります。

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

  • Podfileを保存してXcodeを閉じ、もう一度pod installを実行します。
  • Project.xcワークスペースを開く

多分それだけです。

そうでなければ、上に行くことができます;-)

1
Diphaze

私はこれと同じ問題を抱えており、次のようにしてそれを解決しました:

「プロジェクト」>「ビルド設定」で

Always Embed Swift Standard Libraries = $(inherited)Use Legacy Swift Language Version = YES

それから私のPodfileで:

config.build_settings['Swift_VERSION'] = '3.0'

これら3つの設定を使用すると、すべての警告が取り除かれ、正しくコンパイルできました。

最もわかりにくく、実際にコンパイルが進んだ理由は、 here のようにPodfileのSwift_VERSIONを3から3.0に変更することでした。

1
Hector Partidas

Xcode 9のベータ版では。プロジェクト設定、ビルド設定に移動し、Swift Language Versionを検索します。 Xcode 9では、Swift 3.2とSwift 4のどちらを使用しているかを指定する必要があります。

1
Niall Kehoe