CocoaPods 和 Swift 3.0

CocoaPods and Swift 3.0

我只想在我的一个项目中尝试 Swift 3.0。 Xcode 打开迁移 window 更新我的项目以使用 Swift 3.0.

问题是,我只想更新我的项目,并保持 Pods 项目不变,因为在我再次 运行 pod install 之后,任何更改都将被丢弃。

有人对此有解决方案吗?

你问的是不可能的。 Xcode 构建您的 Cocoapods 依赖项以及您的项目。您不能在同一项目中混合使用 Swift 2.x 和 Swift 3 代码,也不能将 Cocoapods 与 Swift 3 中编写的 Swift 2.x 一起使用。

这可能会有所帮助 Swift migration guide

直接来自Swift.org

Using Carthage/CocoaPods Projects

如果您正在使用其他项目的二进制 Swift 模块,这些模块不是与您的项目一起构建在您的 Xcode 工作区中,您可以选择以下迁移策略之一:

  1. 将项目的源代码包含在您的 Xcode 工作区中 您将通过这种方法构建和迁移开源项目 以及您自己的项目。
  2. 使用 Xcode 7.3[.1] 进行必要的更改并验证 该项目正确构建和链接所有内容。
  3. 在您的工作区和设置中包含其他 Xcode 项目文件 您构建项目所依赖的目标的方案。 如果您有用于查找二进制文件的设置框架搜索路径 Swift Carthage 构建文件夹中的模块,或者删除 搜索路径或清理构建文件夹,以便您确定 您只使用从 Xcode 构建的 Swift 模块 工作区。

等到上游开源项目更新到Swift2.3或Swift3

You can follow this workflow for migrating your project:

  1. 使用 Xcode 7.3
  2. 构建您的项目
  3. 调用迁移助手并应用已更改的源 仅建议您自己的项目(Swift 2.3 或 Swift 3)
  4. 在尝试构建之前,修改 Carthage/CocoaPods 依赖项 文件并指定项目的具体 tag/branch 迁移到 Swift 2.3 或 Swift 3;更新您的依赖项并尝试 使用更新的依赖项和源构建您的项目 您从迁移器获得的更改。

只需在您的 podfile 末尾使用以下命令,它会设置您的 pods 文件,让框架自动采用 swift 3 编译器或遗留编译器,这样您就不会得到不能在 swift 3 中使用 swift 2.1 和类似的错误。

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

使用它,看看我的 podfile 的以下示例。只要确保结束语句不在我上面写的块之前。

platform :ios, '8.0'
use_frameworks!

target 'Project 1'

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'

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

任何 xcode 在使用最新的 cocoapods 并删除 cocoapods 并再次安装最新的这个步骤在 swift 3.0 中正常工作我在 swift 3.0

中使用

0.sudo gem 安装 cocoapods

1.cd(拖放项目文件夹)

2.sudo gem 安装 cocoapods

3.touch podfile //创建podfile

4.open -e podfile

5.platform:ios, '10.0' use_frameworks!

目标''做 pod 'Alamofire', '~> 4.4' 结束

6.ctrl+s

7.ctrl+q

8.pod 安装