Swift 4.2がリリースされ、プロジェクトでObjectMapper
およびその他のポッドも使用しているときにこのエラーメッセージが表示されます。
Swift 4.1.2でコンパイルされたモジュールは、Swift 4.1.50にインポートできません
Xcodeにプロジェクトの更新を開始してSwift 4.2に移行するように指示するにはどうすればよいですか?
Swift 4.2では、Implicitly Unwrapped Optional(IUO)の実装に変更があります。これは、 Swift blog によると暗黙的なunwrapped Optional T! Tと見なされますか?コンパイラが暗黙のラップ解除オプションであることを認識するための追加フラグ。
IUOの新しいメンタルモデルは、皆さんが検討するものです。の同義語になりますか?さらに、宣言にフラグを追加して、宣言された値を暗黙的にアンラップできることをコンパイラーに知らせます。
この変更により、ソースの互換性の問題が発生する場合があり、正常にコンパイルする前にコードを変更する必要がある場合があります。
Swift 3では、var a:Int?のような宣言タイプがOptionalになり、var b:String!のような宣言になります! bのタイプがImplicitlyUnwrappedOptionalになります。 Swift 4.2で変更されたため、Swift 4.2に付属するXcode 10の ObjectMapper でエラーが表示され、3。*で同様の実装が行われました。 Xcode 10の場合。
Objectmapperライブラリには、以前にSwift 4.1の警告を示していた関数の宣言がいくつかあり、現在はSwift 4.2のエラーとして表示されています。 Xcode 9.4およびSwift 4.1の警告については、以下の画像を参照してください
ObjectMapper GitHubリポジトリにはいくつかのプルリクエストがあり、これにより問題が修正されましたが、 complierディレクティブを使用しているため、議論に従って新しいXcodeベータリリースを待っています 最近受け入れられた機能は、新しいXcodeベータでリリースされます。
更新:この問題はObjectMapper 3.3.0バージョンで修正されました。
適切なSwiftバージョンでCarthageモジュールをコンパイルしていません。だからあなたはする必要があります:
Sudo xcode-select -switch Xcode_beta_10.app
カルタゴ更新--platform iOS --no-use-binaries
ターミナルを使用して、プロジェクトディレクトリで以下のコマンドを実行します。ポッドが更新されます。それがあなたの問題を解決することを願っています。
pod update ObjectMapper
ターミナルでXcodeベータバージョンを切り替える必要があります。プロジェクトの古いバージョンのCarthageドキュメントを削除します。 carthage carthage update --platform iOS --no-use-binaries
を更新します。