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.
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
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
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
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
Paramètres de construction
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