17

Swift 4.2 が出てきて、ObjectMapper他のいくつかのポッドを使用しているときに、プロジェクトでこのエラー メッセージが表示されます。

Swift 4.1.2 でコンパイルされたモジュールを Swift 4.1.50 にインポートできない

では、プロジェクトの更新を開始して Swift 4.2 に移行するように Xcode に指示するにはどうすればよいでしょうか?

4

5 に答える 5

8

Swift 4.2ではImplicitly Unwrapped Optional (IUO)の実装が変更されています。は T と見なされますか? with およびコンパイラーが暗黙の unwrap オプションであることを知るための追加のフラグ。

IUO の新しいメンタル モデルは、あなたが検討するものです。の同義語になるには?さらに、宣言にフラグを追加して、宣言された値を暗黙的にアンラップできることをコンパイラーに知らせます。

この変更により、ソースの互換性の問題が発生し、正常にコンパイルする前にコードの変更が必要になる場合があります。

Swift 3 では、var a: Int? のような宣言 型が Optional になり、var b: String! のような宣言になります。b は ImplicitlyUnwrappedOptional 型になります。Swift 4.2 で変更されたため、Swift 4.2に付属する Xcode 10のObjectMapperでエラーが表示され、Xcode 10 の 3.* でも同様の実装が行われました。

Objectmapper ライブラリには、Swift 4.1 で以前に警告を表示していた関数の宣言がいくつかあり、現在は Swift 4.2 でエラーとして表示されています。Xcode 9.4 および swift 4.1 での警告については、以下の画像を参照してください。

ここに画像の説明を入力

問題を修正したObjectMapper GitHub リポジトリにいくつかのプル リクエストがありますが、最近承認されたコンパイラ ディレクティブ機能を使用しているため、議論に従って新しい Xcode ベータ版がリリースされるのを待っています。

更新: この問題は ObjectMapper 3.3.0 バージョンで修正されています。

于 2018-06-10T18:21:11.703 に答える