web-dev-qa-db-ja.com

Swift 4.0でコンパイルされたモジュールはSwift 4.0.1にインポートできません

しかし、私は同じXcodeを使ってフレームワークを再コンパイルしましたが、それでもこのエラーが発生します。

  • 両方のベースSDK iOS 11.1
  • Swiftの言語バージョンSwift 4.0 for both
  • ポッド/カルタゴを使わない

誰かが知っているかもしれません

66
Simon

更新:

Xcodeのリリースバージョンの場合:

このエラー(およびSwift 4.1、4.2などに関連する同様のエラー)は、以前のXcodeツールで構築されたフレームワークを使用するXcode 9.1、9.2、9.3、9.4、10などでプロジェクトを開くときに発生します。

この問題を解決するには、Carthage(carthage update --platform iOS)、Cocoapods(pod updateまたはpod install)を使用するか、新しいXcodeツールを使用して手動でフレームワークを更新および再構築します。 Xcodeをアップデートするとツールは自動的にアップデートされますが、そうでない場合は、元の回答で以下に概説されている手順に従うことができます。

Xcodeでキャッシュされたフレームワークビルドを使用しないようにするには、プロジェクトのcmd + shift + kおよびおそらくビルドフォルダのcmd + option + shift + kを消去する必要があります。

場合によっては、派生データフォルダを削除する必要があるかもしれません(Xcodeの[設定] - > [場所] - > [派生データフォルダ]をクリックすると簡単に見つかります( Thanks Stunner

Xcodeのベータ版:

下記の元の答えを参照してから上記の手順に従ってください。

元の答え:

あなたはおそらくあなたのxcodebuildツールをSwift 4.0で構築されXcode 9.1ベータ版のSwift 4.0.1と互換性がないXcode 9.0に設定したままにしているでしょう。

次のコマンドを使って端末をチェックインします。

xcodebuild -version

または単にXcodeの設定 - >場所に行き、Xcode 9.1にコマンドラインツールをチェック/変更してください。あなたはそれから設定されるべきです。

113
Zig

私の問題はSwift 4.0.2用にコンパイルされていない外部フレームワークが原因でした。私はこのファイルを Carthage で追加したので、実行します。

carthage update --platform iOS

それからプロジェクトcmd + shift + kとビルドフォルダcmd + option + shift + kをきれいにし、派生データフォルダを削除する(単にそれをゴミ箱に移動するだけでもいい)のは私にとってうまくいった。

20
Stunner

ここから からあなたのために働いていた特定のXcodeバージョンのXcode Toolchainをインストールしてください

Xcodeツールチェーンには、特定のバージョンのSwiftで作業するための一貫した開発経験を提供するために必要なコンパイラ、lldb、およびその他の関連ツールのコピーが含まれています。

Xcodeの「環境設定」を開き、「コンポーネント」>「ツールチェーン」に移動して、インストールされているSwiftツールチェーンを選択します。

これにより、当面の間、アプリをコンパイルして実行できます。

8
Tina

私はSwift 4.2を追加したXcode 10 betaでこの問題にぶつかった。私の問題はカルタゴや外部の依存関係とは無関係でした。

すべてのXcodeターゲットについてはYourTarget > Build Settings > Swift Language Versionにアクセスしてください。

私のものはすべてSwift 4に設定されていました。

ファイルのコピービルドフェーズを追加した後、エラーが発生し始めました

:0:エラー:Swift 4.1.2でコンパイルされたモジュールはSwift 4.2コンパイラでインポートできません:/Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

コマンドMergeSwiftModuleがゼロ以外の終了コードで失敗しました

次に、各ターゲットのSwift Language VersionSwift 4.2に設定しました。これにより、エラーがなくなりました。

ただし、すべてのターゲットをSwift 4に設定しても同じくらい有効であるはずなので、最初にエラーが発生した理由はわかりません。

7
pkamb

私の場合(Xcode 9.2):

私はXcodeに行きましたPreferences > Locations > Derived Data

それから私はそのデータを削除してクリーンビルドをしたが大丈夫だった。

3
user3288482