web-dev-qa-db-fra.com

Comment construire un projet xcode 9 avec Swift 4.0 en utilisant des pods dans Swift 3?

Je souhaite que le module principal de mon application iOS compile Swift 4.0 tandis que le module CocoaPods compile Swift 3 

PS: Utilisation de Xcode 9 beta 2.

19
Sanf0rd

Finalement, je me suis mis à travailler: tout ce que j'avais à faire, c'était de mettre ce script à la fin de Podfile:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['Swift_VERSION'] = '3.2'
        end
    end
end
15
Sanf0rd

Si vous utilisez des pods écrits dans Swift 4, mais que certains sont Swift 3.2, voici comment vous pouvez spécifier la valeur Swift_VERSION:

Swift_32 = ['Pod1', 'Pod2', 'Pod3'] # if these pods are in Swift 3.2
Swift4 = ['Pod4', 'Pod5', 'Pod6'] # if these pods are in Swift 4

post_install do |installer|

    installer.pods_project.targets.each do |target|
        Swift_version = nil

        if Swift_32.include?(target.name)
            Swift_version = '3.2'
        end

        if Swift4.include?(target.name)
            Swift_version = '4.0'
        end

        if Swift_version
            target.build_configurations.each do |config|
                config.build_settings['Swift_VERSION'] = Swift_version
            end
        end

    end

end
17
bubuxu

Voici une façon beaucoup moins verbeuse de définir les pods dont vous avez besoin sur 3.2 et de laisser tous les autres à 4.0 

post_install do |installer|
  installer.pods_project.targets.each do |target|
      if ['AirMapSDK', 'PhoneNumberKit', 'Lock', 'RxSwift', 'RxSwiftExt', 'RxCocoa', 'RxDataSources', 'ProtocolBuffers-Swift'].include? target.name
          target.build_configurations.each do |config|
              config.build_settings['Swift_VERSION'] = '3.2'
          end
      end
  end
end

Il suffit de modifier le tableau dans l'instruction if. tout le reste sera par défaut à 4.0

11
Justin Miller

Project Navigator> Choisissez 'Pods'> Choisissez le pod Swift 3.2> 'Paramètres de construction'> Faites défiler vers le bas et définissez ensuite Swift Language Version sur 3.2 dans 'Swift Compiler - Section Language'.

En faisant cela, Xcode affichera un problème avec Buildtime. Il vous demandera de convertir le code source des pods en Swift 4. Ne faites pas cela. Cliquez sur ce problème> Décochez "Me le rappeler"> Cliquez sur "Convertir plus tard".

Navigateur de projet

 Project Navigator

Paramètres de construction

 Build Settings

9
siradityaverma

Définissez Swift 4.0 pour toutes les cibles sauf ce cadre qui devrait être Swift 3.2

C'est ce que je fais actuellement dans un projet

0
nathan