Xcode 9では、Swift 4.への自動変換を試みています。次のメッセージが表示されて失敗します。
Convert to Current Swift Syntax Failed
選択したすべてのターゲットが、現在設定されているSwift=バージョンで正常にビルドされることを確認してから、移行を試みてください。
モジュールが見つからないという不満があります。しかし、私が定期的にビルドを行うとき、問題はありません。これが関連するかどうかはわかりませんが、モジュール(Xcodeが不満を言っている)が既にSwift 4以前(独自のプロジェクト内)に変換されています。
注:ここではココアポッド/カルタゴは使用していません。
注:2つの解決策が試行(および機能)しましたが、根本的な問題に対処していません。
プロジェクトをSwift 4.0に変換しているときにもこの問題が発生しました。すでにSwift=にあるフレームワークをインポートするターゲットを変換しようとすると、問題が発生します4.0。スクリーンショットで、「RecipeTextParser」を変換して、「SovaTools '既にSwift 4.0。
私は汚いが、解決策を見つけた。変換時に、古い(Swift 3.2)バージョンの 'SovaTools'を使用できます。 [〜#〜] not [〜#〜]変換ツールのターゲット選択ウィンドウでマークを確認する必要があります。次に、「RecipeTextParser」が正常に変換されると、Swift 4.0 'SovaTools 'バージョンをもう一度。
私はこのエラーを受け取り、私の場合、私のポッドの1つ(Xcodeが不満を言っていたもの)はSwift 4ターゲットであり、残りはSwift 3.2。ビルドログを見ると、Xcodeはそのフレームワークを1つの場所でビルドし、別の場所で検索していたように見えます。そのポッドを古いバージョン(Swift3.2を使用)に戻すと、問題はなくなりました。
ポッドを更新するだけで問題が解決します。
ポッドを更新するには:
これで問題が解決しました。
Xcode(Xcode 9)言語移行機能は、完全なコード/プロジェクトを1つのSwiftバージョンから別の許容範囲ゼロに移行できるほど正確ではありません。 )。ツールのバグまたは不正確な可能性がありますが、プロジェクト/コードのSwift言語バージョン。
スナップショットによると、Xcodeは「RecipeTextParser」フレームワークのエラーを表示しています。これは外部/サードパーティのフレームワークだと思います。別の注意点として、CocoaPodsを使用してこのフレームワークを統合しました。
次のいずれかがコード移行の失敗の理由になります。
ソリューションとしての提案:
Swift言語間でコードを完全に移行するには、手作業が必要です。私はSwift上記のオプションで移行し、すべてのプロジェクトはSwift 4。