我使用的是
cocoa pod 1.1.1版,
swift 3.0.1和
Xcode 8.1.我有一个应用程序,它使用像这样的可可豆荚(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
我也有一些Objective-C文件,这就是我使用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"
当我运行TestApp时,它运行得很好.但我运行单元测试用例,我在TestAppTests上出错 – > Swift编译器错误 – >无法在#import“GoogleAnalytics / GAI.h”上导入桥接标题“TestApp-Bridging-Header.h”未找到.
我修复了这个问题,在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
我只是想知道下面提到的点,当我将代码迁移到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?
请解释原因.
最佳答案 由于单元测试用例包含不同的目标,因此必须将cocoapods安装到该目标.所以你做的是正确的.
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.是否需要在不同目标中安装每个吊舱?或者我们有任何替代解决方案.
是的,您需要在所有不同的目标上安装pod.
2.处理这类问题的最佳技术是什么?
这是大多数人的做法之一.
但是对于更复杂的事情,如果你想做,那么拿这个Reference.