cocoa pod: error del comstackdor Swift "No se pudo importar el encabezado de puente" razón?

Estoy usando cocoa pod versión 1.1.1, swift 3.0.1 y Xcode 8.1. Tengo una aplicación que usaba vaina de cocoa como esta (Podfile)

# Uncomment this line to define a global platform for your project # platform :ios, '6.0' platform :ios, '8.0' use_frameworks! target 'TestApp' do pod 'GoogleAnalytics', '~> 3.14.0' end target 'TestAppTests' do pod 'Quick' pod 'Nimble' end 

Y también tengo un file objective-C, por eso utilicé el file Bridging-Header.h.

 // // Use this file to import your target's public headers that you would like to expose to Swift. // #import <CommonCrypto/CommonCrypto.h> #import <GoogleAnalytics/GAI.h> #import <GoogleAnalytics/GAIFields.h> #import <GoogleAnalytics/GAIDictionaryBuilder.h> #import <GoogleAnalytics/GAILogger.h> #import <CoreBluetooth/CoreBluetooth.h> #import "AModel+Level.h" #import "AModel+AutoStatus.h" #import "AModel+Settings.h" #import "APacketData+Decoders.h" #import "Reachability.h" 

Cuando ejecuto TestApp, se ejecuta perfectamente. Pero ejecuto los casos de testing de unidad, obtuve un error en TestAppTests -> error del comstackdor Swift -> No se pudo importar el encabezado de puente "TestApp-Bridging-Header.h" en #import "GoogleAnalytics / GAI.h" no encontrado.

Soluciono este problema, usando esta técnica en podfile:

 platform :ios, '8.0' use_frameworks! target 'TestApp' do pod 'GoogleAnalytics', '~> 3.14.0' end target 'TestAppTests' do pod 'GoogleAnalytics', '~> 3.14.0' pod 'Quick' pod 'Nimble' end 

Solo quiero saber los siguientes puntos de mención, cuando migro el código a Swift 3.0.1:

 1. Is it require to install every pods in different targets? or we have any alternate solution. 2. What is the best technique to handle this kind of problems? 

Por favor explique los motivos.

Como los casos de testing de unidad contienen un objective diferente, debes instalar cocoapods en ese objective. Entonces, lo que hiciste es correcto.

 platform :ios, '8.0' use_frameworks! target 'TestApp' do pod 'GoogleAnalytics', '~> 3.14.0' end target 'TestAppTests' do pod 'GoogleAnalytics', '~> 3.14.0' pod 'Quick' pod 'Nimble' end 

1. ¿Se requiere instalar cada module en diferentes objectives? o tenemos alguna solución alternativa.

Sí, necesita instalar pods en todos los diferentes objectives.

2. ¿Cuál es la mejor técnica para manejar este tipo de problemas?

Esta es una de las maneras en que la mayoría de las personas lo hacen.

Pero para cosas más complejas, si le gustaría hacerlo, tome esta reference .

Agregar el marco específico al objective de testing me funciona. En mi caso, al ejecutar la testing de unidad, uno de los frameworks no lo encontró el linker.

Después de editar mi Podfile de la siguiente manera pude ejecutar mis testings:

 target 'MyTarget' do pod 'somePod' pod 'somePod2' target 'MyTargetTests' do inherit! :search_paths pod 'somePod2' end end