将pods(图表)更新为最新的Swift语法

时间:2016-11-26 13:37:27

标签: objective-c swift cocoapods xcode8

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

warning

如果这是我的代码,这不会有问题,但我们在这里谈论的是pods。那么,处理此警告并切换到此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

1 个答案:

答案 0 :(得分:1)

“图表”窗格记录在https://cocoapods.org/pods/Charts上。 当前版本(在提问时)使用的是Swift 3.0。因此,在使用它时,所有依赖项也必须使用Swift 3.0(在使用Frameworks时,不能混合使用不同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版本的依赖项与您正在使用的内容。

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