我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?
Posted
技术标签:
【中文标题】我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?【英文标题】:Can I use Swift 2.3 frameworks in a Swift 3 project? 【发布时间】:2016-09-30 22:32:42 【问题描述】:在我的项目中,我将所有私有 swift 2.3 文件迁移到 swift 3。我想使用我用 swift 2.3 编写的遗留框架,直到它们有 swift 3 版本。
我尝试添加“使用旧版 Swift 版本 = 是”。清除/构建我的项目,但我仍然遇到一些麻烦,xCode 要求我将我的框架迁移到 swift 3(这是不可能的,因为它们是库)......
如何继续使用我的 2.3 库?
【问题讨论】:
您不能将 swift 2.3 与 swift 3 混合使用。至少现在还不能。 那么我该怎么做才能继续开发我的项目呢? 我猜你可以继续在整个项目中使用 swift 2.3,直到更新这些框架。 许多框架同时提供 Swift 2 和 3 版本,但并不总是很明显。您可能想检查相关库是否有 Swift 3 分支。但是,正如 Sam 所说,如果有问题的库之一尚未提供 Swift 3 版本,您可以将项目保留在 Swift 2.3 中。 您只使用您提到的“使用旧版 Swift 版本”功能,如果它要求您转换任何内容,请拒绝。 【参考方案1】:你可以试试这个:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
end
请注意,这会将您的所有目标设置为 swift 2.3。如果你想要一个特定的,你可以这样做:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.pod_name == 'DesiredPod'
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '2.3'
end
end
end
end
【讨论】:
我在 target.pod_name 上遇到错误,但 target.name 有效【参考方案2】:您可以将Build Settings->Swift Compiler - Version-> Use Legacy Swift Language Version设置为Yes
【讨论】:
以上是关于我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?的主要内容,如果未能解决你的问题,请参考以下文章
从Swift 3.2迁移到Swift 4我使用autosavesInPlace收到错误
Alamofire swift 库版本 4.4 未安装在 swift 3.0.2 项目中