【问题标题】:Updating pods (Charts) to the latest Swift syntax将 pod(图表)更新为最新的 Swift 语法
【发布时间】:2016-11-26 13:37:27
【问题描述】:

目前我在我的 Objective-C 项目中使用Charts pod,所以我今天必须在 Xcode 8.1 中打开它,当然,我收到了这条消息:

如果是我的代码,这不会是一个问题,但我们在这里谈论的是 pod。那么,处理此警告并为此 pod 切换到 Swift 3 语法的正确方法是什么?

我尝试过的:

我已经运行了 pod update 命令,并希望将其更新到最新版本...不过,当我打开 Xcode 时,我收到了相同的消息。这是我的 Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.2'
pod 'Charts', '~> 3.0'

use_frameworks!

target 'drivingCOACH' do
  pod 'Charts', '~> 3.0'
end

【问题讨论】:

  • 把它放在 Podfile 的末尾应该可以解决 post_install do |installer| 的问题installer.pods_project.targets.each 做 |target| target.build_configurations.each 做 |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end
  • @ThomasG。那么这实际上是做什么的?因为我有另一个可以正常工作的 pod...
  • 好吧,我最终更改了构建设置 -> 使用旧版 Swift 版本 = 否。还尝试了您的代码,并且有效。不过,我并不完全清楚它的作用(看起来它循环遍历所有目标并将它们的配置设置为使用 SWIFT_VERSION = 3,对吧?)
  • 你是对的。我无法解释为什么我们需要所有 pod 目标具有相同 SWIFT_VERSION 的这些行的确切原因。也许这将在以后的 Cocoapods 版本中修复。 - 一个提示:注意使用旧版 Swift 版本标志,因为它会在每次 pod 安装或更新后重置
  • @ThomasG。是的,我注意到每次更新(或安装)后发生了什么,感谢您指出这个想法。

标签: objective-c swift cocoapods xcode8


【解决方案1】:

图表窗格记录在https://cocoapods.org/pods/Charts 上。 当前版本(在提出问题时)使用的是 Swift 3.0。所以在使用它的时候,你所有的依赖也必须使用 Swift 3.0(在使用框架时你不能混合不同 Swift 版本的依赖,这是目前的强制要求)。

您可以手动更改构建设置以指定每个 pod 目标都用于 Swift 3.0(通过将“使用旧版 Swift”值设置为 NO)。但是因为你的项目是在 Objective-C 中的,所以每次运行 pod install 时,你可能最终都会做这个操作。

为避免这种麻烦,您可以扩展 Podfile 的安装脚本以包含这些行,它将在您的下一个 pod deintegrate && pod install 上执行与上述完全相同的操作:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
           config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

在您决定将一些 Swift 代码集成到您的应用程序的那一天,这些行将不再需要,因为 CocoaPods 会将依赖项 Swift 版本与您正在使用的版本相匹配。

此外,如果您遇到一些缓存问题,您可能需要在 Xcode 关闭时删除您的 Derived Data 文件夹(默认为~/Library/Developer/Xcode/DerivedData)。

【讨论】:

  • 我仍然不知道这是否顺利...我已经重新安装了 Charts pod,但我仍然收到一堆语法错误(例如,在 Swift 3 中,你必须使用这个和那个。 ..) 这是预期的吗?我想如果我重新安装 pod,它将更新为最新的语法...
  • @Whirlwind 你在使用最新的稳定版 CocoaPods 吗? pod --version 今天应该返回 1.1.1
  • @Whirlwind 哦,还有,在 Xcode 关闭时删除派生数据
  • @Whirlwind,最后但同样重要的是,issue tracker 是 CocoaPods 帮助的最佳位置。但他们通常会要求提供可以重现问题的示例项目。
  • 好吧,不能那样做。但是我可以使用派生数据的东西......自 Xcode 7.3.1 以来我不知何故再也看不到了。窗口菜单中有一个项目选项,对吗?我再也看不到了。
猜你喜欢
  • 2023-03-19
  • 2017-02-08
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多