コマンドSwift --version
で現在のSwiftバージョンを見つける方法に関する質問を確認しましたが、Swiftバージョンを3.1から3.2?(Xcode 9はSwift 4.0&Swift 3.2)のみをサポートするため
Xcode 8とXcode 9の両方で正常にビルドするには、Swift 3.1から3.2にアップグレードすることをお勧めします。
私の目標は、Xcode 8とXcode 9の両方で正常にビルドできるようにすることでした。そのため、Xcode 8での公開は問題なく、Xcode 9の機能も試してみてください。 Xcode 9.0の公式版が公開されるまで、コードをSwift 4.0にまだアップグレードしません。
テスト後、Xcode 8.3.3の 'edit-> convert'関数によってコードをSwift 3.1から3.2に変換できません。
コードをSwift 3.2に変換しようとする理由は、 "Swift Xcode 9でコードをビルドすると、Swift 4.0 "に3.1をインポートできません。
Swift 3.2は、プロジェクトをSwift 4.に完全に変換せずに、Xcode 9でSwift 3コードを使用し続けるための一時的な解決策です。
Xcode 8.3.3に含まれているSwiftバージョンは3.1です。Xcode9でコードをSwift 3.2に変換しても、Xcode 8でコンパイルできることを保証しません。
Swift 3.1 code Swift 3.2 Xcode 9では3.2はすべての変換を必要とします。両方とも同じ構文を共有しているためです。一部のAPI呼び出しを修正して、新しいSDKの変更を補正します。
Appleにはもう少し情報があります。
(更新済み)
最後の画像に関して、ルーンモジュールのソースコードがある場合は、Xcode 9で再コンパイルする必要があります。これにより、Swift 3.2を使用してインポートできるようになります。 Swift 4。
Swiftはxcode9で再コンパイルする必要があるので、Swiftは ABI互換/安定 ではありません。 carthageやcocoa podなどのパッケージ配布システムを使用した依存関係が含まれていた場合、モジュールはxcode9で再コンパイルされるため、この問題は表示されないはずです。
変換する必要はありません。
Swift 3.2は実際のバージョンではありません。 Xcode 9(およびSwift 4コンパイラ)がSwift 3.を呼び出す方法です。(Swift Xcode 8で構築された3)。
オプションメニューから:編集->変換->現在にSwift構文
上記の手順は、現在のSwift構文に変換するのに役立ちます。