短編:Xcode 10はSwift 4に設定されていますが、Swift 4.2を使用しています。
長い話:依存フレームワークはまだSwift 4.2ではないため、プロジェクトはSwift 4.2に対応していません。しかし、少なくとも、Xcode 10を使用したいと思います。
「Swift --version Apple Swiftバージョン4.1.2(swiftlang-902.0.54 clang-902.0.39.2)」
「Swift 4.1.2でコンパイルされたモジュールは、Swift 4.2コンパイラではインポートできません:.../App/Carthage/Build/iOS/RealmSwift.framework/Modules/RealmSwift.swiftmodule /arm64.swiftmodule "
私にとってこれは、意図したSwiftバージョン(4.1.2)が正しく設定されており、XcodeがSwift(4.2)の間違ったバージョンを使用しようとしていることを示しています。
誰もこれを解決する方法について提案がありますか?何か不足していますか? Xcodeのバグ?
私は前向きではありませんが、私の推測はこれが理由だということです:
Xcode 9.4.1を使用するようにコマンドラインツールを設定しています
Swift ABI-stableではない 、つまり異なるコンパイラバージョンでコンパイルされたバイナリは互換性がないため、Xcode 10を使用してSwift 4依存関係を再コンパイルする必要があります。また、異なるバージョンのXcodeでコンパイルされたSwift 4.0バイナリでさえ互換性がない場合があります。
Carthageの経験はあまりありませんが、コマンドラインツールとしてXcode 10を使用する必要があると思いますが、Xcode 10で使用する別のSwift言語バージョンを設定する必要があります。おそらくプロジェクト(この場合はRealmSwift)で指定するか、環境変数を使用する必要がありますが、詳細を答えてくれる誰かが必要になると思います。
Xcode 10でRealmを使用するには、ソースからビルドする必要があります。ターミナルで書き込み:
git clone --recursive https://github.com/realm/realm-cocoa.git
cd realm-cocoa
sh build.sh ios-Swift
multiple Swift toolchainsを使用できます。 urlをダウンロード Swift toolchain download 何らかのバージョンをインストールした後。 xcodeを再起動すると、xocdeメニューにtoolchainsオプションが表示されます。
モジュールがCocoapodsを使用して取得された場合、ターミナルからpodfileディレクトリに移動して実行できます:
pod install
これにより、Swift 4.2のモジュールが再コンパイルされます。それは私のために働いた、あなたのために働くことを願っています。
私は同じ問題を抱えていたので、Xcode
としてXcode 10を選択していないことに気付きました。試してください:
Sudo xcode-select -s /Applications/Xcode10.app
また、Xcode9と10を切り替える場合は、次のことをお勧めします。9から10に変更する場合は、mv Carthage Carthage9
を実行してからCarthageを再構築してください。いつでも元に戻すには、CarthageをCarthage10
に移動し、mv Carthage9 Carthage
を実行します。これにより、構築にかかる時間を大幅に節約できます。