Xcodeを8.1 GMにアップグレードしたところ、SwiftyJSONで次のエラーが発生しました。他のインポートされたフレームワークは動作するようです。 SwiftyJSONがフレームワークをアップグレードするまで、これをSwift 3で強制的に動作させる方法はありますか? Carthageを使用してフレームワークをインポート/更新しました。また、Use Legacy Swift language version
のオンとオフを無効に変更してみました。
Swift 3.0でコンパイルされたモジュールは、Swift 3.0.1にインポートできません:Modules/SwiftyJSON.swiftmodule/arm64.swiftmodule
SwiftyJsonは、カルタゴによってプリコンパイルされてダウンロードされています。プリコンパイルされたダウンロードは、Swiftバージョン3.0を使用しています。そのため、コンパイラーはバージョンが正しくないことを訴えます。次のコマンドを使用します。
carthage update --platform iOS --no-use-binaries
SwiftyJson(およびCarthage内の他のすべてのフレームワーク)は、Swift(3.0.1)のローカルバージョンを使用してローカルにコンパイルされ、コンパイラーはこれ以上文句を言いません。
DerivedDataからアプリの機能を削除し、再構築します。エラーが修正される場合があります。
次のようなDerivedDataパス:
~/Library/Developer/Xcode/DerivedData/
アプリケーションフォルダーに新しいXCode 8.1 GMパッケージを配置したことを確認してください。依存関係を更新するためにCarthageを実行しているときに、この問題に遭遇しましたが、アプリケーションフォルダーのXCode古い8.0アプリケーションを置き換えていませんでした(8.1 GMはデスクトップから実行されていました)。
ターミナルで次のコードを実行するときに、xcrun Swift -version
がApple Swift version 3.0.1
を返すことを確認する必要があります。
端末でデフォルトのXcode
を新しいものに更新してくれました。
ステップ1:次のコマンドを使用して、ターミナルのXcodeバージョンを最新に更新します。 参照
Sudo xcode-select -switch <path/to/>Xcode.app
ステップ2:ここで、カルタゴ更新コマンドを試してください
carthage update --platform iOS
最新のアップデートを提供するだけです:
Carthageは、2017年2月27日に バージョン0.2 をリリースしました。
Carthageは、使用可能なビルド前バイナリに互換性がある場合にのみ、ビルド前のバイナリを使用するようになりました。
つまり、互換性のないビルド前フレームワークを回避するために--no-use-binaries
を使用する必要はなくなりました。
したがって、カルタゴバージョンが0.20
よりも大きいことを確認し、次のようにします。
carthage update --platform iOS
@zirinispが言ったように:
carthage update --platform iOS --no-use-binaries
xcrun Swift -version
Swiftバージョンを確認するXcode->preferences->locations
は派生データをクリアし、データをアーカイブします。これは、コマンドラインツールを「Xcode 8.1
」に変更することが最も重要です。xcrun Swift -version
、Swiftバージョンが3.0.1であることがわかります。Use Legacy Swift Language Version = NO
を設定私はそれがあなたを助けることを願っています
次の出力を確認します。
xcrun Swift --version
ターミナルでこのコマンドを実行すると、その出力はアプリがコンパイルするSwiftバージョンと一致する必要があります。Carthageはこのコマンドの出力を使用してローカルSwiftバージョンを決定するためです。
次のコマンドを実行して、ターミナルでXcodeバージョンを最新に更新します。
Sudo xcode-select -s /Applications/Xcode-beta.app/
次のコマンドを実行して、iOS用のライブラリをビルドし、既存の(まだ互換性のない)プリコンパイル済みバイナリをCarthageがダウンロードしないようにします。
carthage update --platform iOS --no-use-binaries
クリーン&ビルド
ライブラリXCTest_Gherkin
でもまったく同じ問題が発生しました。
Product
-> Scheme
-> XCTest-Gherkin
Product
-> Build
それが役に立てば幸い。 Cocoapodsを使用しています。
Xcodeでビルド設定必ずフレームワーク検索パスに適切なCarthage Buildフォルダーが含まれていることを確認してください:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS