web-dev-qa-db-ja.com

Swift 3.1から3.2にアップデートできますが、4.0にはアップデートできません

コマンド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に変換できません。

enter image description here

コードをSwift 3.2に変換しようとする理由は、 "Swift Xcode 9でコードをビルドすると、Swift 4.0 "に3.1をインポートできません。

enter image description here

10
JerryZhou

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にはもう少し情報があります。

https://developer.Apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Compatibility.html

(更新済み)

最後の画像に関して、ルーンモジュールのソースコードがある場合は、Xcode 9で再コンパイルする必要があります。これにより、Swift 3.2を使用してインポートできるようになります。 Swift 4。

6

Swiftはxcode9で再コンパイルする必要があるので、Swiftは ABI互換/安定 ではありません。 carthageやcocoa podなどのパッケージ配布システムを使用した依存関係が含まれていた場合、モジュールはxcode9で再コンパイルされるため、この問題は表示されないはずです。

2
rajagp

変換する必要はありません。

Swift 3.2は実際のバージョンではありません。 Xcode 9(およびSwift 4コンパイラ)がSwift 3.を呼び出す方法です。(Swift Xcode 8で構築された3)。

https://developer.Apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Compatibility.html

1
Fogmeister

オプションメニューから:編集->変換->現在にSwift構文

上記の手順は、現在のSwift構文に変換するのに役立ちます。

0
devang bhatt