我更新到Xcode 8并转换为最新的Swift 3.0语法。我的项目中有一些Cocoapods,有些是在Swift 2.3上(例如,一些较旧的pod需要Alamofire设置为v3.5,运行Swift 2.3)。
我已将这些Pod设置为使用Legacy Swift - >是的,但在构建时我收到错误:
Module complied with Swift 2.3 cannot be imported in Swift 3.0: /Users/....XSDK/XSDK.framework/swiftmodule/x86_64.swiftmodule
我不使用迦太基(在其他问题中引用)。只有Cocoapods。
我是否需要将我的项目转换为使用Swift 2.3?或者我可以在我的项目中使用Swift 3.0并仍然使用传统的Cocoapods吗?
答案 0 :(得分:1)
不幸的是,由于Swift不是ABI Stable,你不能像这样组合pod。这样做的原因是,所有swift pods(以及框架,dylib,.a,.o等)需要在编译后引用的巨大的快速标准库。标准库依赖于语言级别,您不能在单个应用程序中包含swift标准库的多个副本。
自迅捷3发布以来已经过了好几个月。此时,您可能希望跳转到3.如果您发现尚未更新为swift 3的pod,可能会将其分叉并更新并提交pr。作者会爱你的! :)
答案 1 :(得分:0)
要在项目中使用传统的cocoapod,需要遵循两个步骤。
1)研究cocoapod并确保安装正确版本的cocoapod(可能不是最新版本),或者可能位于单独的分支上。
$pod 'Your Cocoapod', :git => 'https://github.com/.....', :branch => 'branch_name'
2)在podfile中,设置Swift版本。您也可以在每个窗格的构建设置中手动执行此操作,但此代码会自动设置它。
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3' # or '3.0'
#config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
end
end
end