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を実行していることにも言及する必要があります。
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
設定を削除することを忘れないでください。
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
私は以前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;
パッチレベルのバージョン指定子が具体的すぎたようです。
プロジェクトまたは他のSwiftサードパーティで古いバージョンのSwiftを使用している場合は、[Use Legacy Swift Language Version]を[YES]に設定します。プロジェクトが現在のSwiftバージョンに更新されている場合は「いいえ」。 Swiftのバージョンを設定しない場合は、アップデートとインストールのたびに、Podフレームワークでこれを指定する必要があります。
私は実際にそれを未指定から "はい"に変更できるようにするために "レガシースウィフト"の検索をしなければなりませんでした。私が単に上記のセクションにスクロールダウンしたとき、私はそれを変更することができませんでした。これが誰かに役立つことを願っています。
XCode 8以降は、XCode 8がデフォルトのSwiftバージョンとしてSwift 3.xを使用していても、Swift 2.3を使用できます。 Swift 2.3を使用するには、ビルド設定からフラグUse Legacy Swift Language VersionをYESにするだけで、XCodeはそのプロジェクトターゲットにSwift 2.3を使用します。
プロジェクトとターゲットのプロジェクトビルド設定に進みます2以下。
ALWAYS_EMBED_Swift_STANDARD_LIBRARIES = YES
And
Swift Compiler - Version = Swift 3
最新のSwift 3
に変更してください。
エラーが解決しました。
エラーが解決したら、どうぞ。
ALWAYS_EMBED_Swift_STANDARD_LIBRARIES
をNO
に変更してもまだ動作しない場合は、xcodeの問題であり、問題ではありません。以下の手順を実行します。
1.警告ターゲットでALWAYS_EMBED_Swift_STANDARD_LIBRARIES
プロパティをYES
に変更します
2.theそれはあなたがSwift 3.0に変更することをお勧めする左バーに警告を表示します
3.次にNO
に戻ります。プロジェクトを再ビルドすると、xcodeはNO
への変更を最終的に検出します。
この場合、問題は解決しました。
複雑な解決策を試す前に、Cocoapodに慣れておらず、この問題が発生している場合に必要な基本的な確認事項を示します。
あなたがする必要があるかもしれません:
platform :ios, '10.1' # Put the right version and no #platform here use_frameworks! # For Swift pod "MyPod" # Your mean pod :)
pod install
を実行します。多分それだけです。
そうでなければ、上に行くことができます;-)
私はこれと同じ問題を抱えており、次のようにしてそれを解決しました:
「プロジェクト」>「ビルド設定」で
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に変更することでした。
Xcode 9のベータ版では。プロジェクト設定、ビルド設定に移動し、Swift Language Versionを検索します。 Xcode 9では、Swift 3.2とSwift 4のどちらを使用しているかを指定する必要があります。