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