web-dev-qa-db-ja.com

Xcode 9でSwift 3プロジェクトをビルドする方法は?

Xcode 9リリースノート は、Swift 3コンパイルがサポートされていることを示します。

Swift 4およびSwift 3、Swift 4およびSwift 3つのターゲットを同じプロジェクトで一緒にコンパイルできます。

Xcode 9ベータ版をインストールしました。しかし、ビルドを押すと、大量のエラーが表示されます。 Xcode 9でSwift 3を使用する場合、特別な準備が必要ですか?

UPD: Module compiled with Swift 3.1 cannot be imported in Swift 4.0

Swift 3.1でコンパイルされたモジュールは、Swift 4.0にインポートできません

42
Exey Panteleev

ターゲットを選択し、Build Settings > Swift Language Versionに移動します。

enter image description here

60
vadian

上記のすべての答えは間違った質問に答えています。 Xcode 9を使用するときは、Swift 4コンパイラーを使用して(Swift 3コードをコンパイルする場合でも)これを修正し、適切なコンパイラー/ Xcodeを使用して再コンパイルします。

コマンドラインでこれを行おうとしている場合は、Sudo xcode-select -switchを使用してxcodeバージョンを切り替えることができます。幸運を!

9
Jeremie

Xcode 10.1およびSwift 4.2の更新

Swift 3、4、および4.2のターゲットは共存してリンクできます。

プロジェクトにとって意味があるときに、ターゲットごとに移行するタイミングとタイミングを決定します。 Swift 4.2への移行は確実に推奨されますが、Swift 3、4、および4.2のターゲットが共存してリンクできるため、オールオアナッシングプロセスではありません。

異なるココアポッドと異なるプロジェクトバージョンも共存できます。

プロジェクトバージョンと比較して異なるバージョンのココアポッドが必要な場合は、ポッドファイルの最後で次の変更を行う必要があります。

post_install do |installer|
    print "Setting the default Swift_VERSION to 4.2\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['Swift_VERSION'] = '4.2'
    end

    installer.pods_project.targets.each do |target|
        if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
            print "Setting #{target}'s Swift_VERSION to 3.0\n"
            target.build_configurations.each do |config|
                config.build_settings['Swift_VERSION'] = '3.0'
            end
        else
            print "Setting #{target}'s Swift_VERSION to Undefined (Xcode will automatically resolve)\n"
            target.build_configurations.each do |config|
                config.build_settings.delete('Swift_VERSION')
            end
        end
    end
end

時々、podを実行した後でも、xcodeを強制的にcocoapodのプロジェクトバージョンを更新し、その場合はcocoapod podプロジェクトを選択し、ビルド設定でSwiftバージョンを変更します。

4
Shubham Mishra

同じ問題がありました-(Swiftバージョンが3xで、プロジェクトのSwiftバージョンがSwift 4.であったポッドをインストールしました。そのため、多くのコンパイラエラーが発生しました。 Swiftバージョンフォーム4を3.2に変更し、プロジェクトをビルドしようとしましたが、コンパイラエラーが発生しました。これは、プロジェクトがSwift 4にある間にポッドインストールを実行したためだと思います)

  • まず、ビルド設定から「Swift言語バージョン」を変更する必要があります。
  • ポッドをインストールした場合、「Swift Language Version」のみを変更しても役に立ちません。プロジェクトのポッドインストールを実行する必要がある場合があります。
3
Jeni Khant

Xcode 9では、Swift 3.2以上でフレームワークを構築する必要があります。 https://github.com/emaloney/CleanroomLogger に移動し、[Zipのダウンロード]をクリックします。 Xcode 9でxcodeprojを開きます。⌘Bを押します。 CleanroomLogger.frameworkが赤から黒に変わります。フレームワークをプロジェクトにドラッグします。関連する質問を参照してください: Swift 3.1のレルムの問題

build it

2
Chris Woolfe