【问题标题】:Can I use Swift 2.3 frameworks in a Swift 3 project?我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?
【发布时间】: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 版本”功能,如果它要求您转换任何内容,请拒绝。

标签: ios swift frameworks swift3


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多