que how ios swift3 cocoapods xcode9-beta swift4

ios - how - ¿Cómo construir un proyecto de xcode 9 con Swift 4.0 usando Pods en Swift 3?



pod install macos (5)

Quiero que el módulo principal de mi aplicación iOS compile Swift 4.0 mientras que el módulo CocoaPods compila swift 3.

PS: Utilizando Xcode 9 beta 2.


Aquí hay una manera mucho menos detallada de configurar los pods que necesita en 3.2 y dejar todos los demás en 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

Solo modifica la matriz en la sentencia if. todo lo demás será por defecto a 4.0


Establezca Swift 4.0 para todos los objetivos, excepto el marco que debe ser Swift 3.2

Es lo que estoy haciendo actualmente en un proyecto.


Finalmente lo puse a trabajar: todo lo que tuve que hacer fue poner este script al final 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


Project Navigator> Elija ''Pods''> Elija Swift 3.2 Pod> ''Crear configuración''> Desplácese hacia abajo y luego configure Swift Language Version en 3.2 en ''Swift Compiler - Language section''.

Al hacer esto, Xcode mostrará un problema de Buildtime. Le pedirá que convierta el código fuente de las cápsulas a Swift 4. No haga eso. Haga clic en ese tema> Desmarque ''Recordarme''> Haga clic en ''Convertir más tarde''.

Navegador de proyectos

Configuraciones de compilación


Si está utilizando algunos pods escritos en Swift 4, pero algunos son Swift 3.2, esta es la forma en que puede especificar el valor SWIFT_VERSION para ellos:

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