Alamofire Xcode 8 Swift 3导致786编译错误

我正在使用Xcode 8.0 GM。 我创build了一个默认的单视图应用程序,部署目标设置为9.0。

在我的Podfile中,我瞄准了Swift 3分支:

source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! target 'MyProject' do pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3' end 

我运行pod install并得到… Installing Alamofire (4.0.0-beta.2) …太棒了,没有问题。 我打开MyProject.xcworkspace

这popup:

将Alamofire转换为最新的语法

我以后不能打,因为它告诉我:

Xcode 8将无法构build目标“Alamofire”,并且某些编辑function将无法正常工作,直到该目标中的Swift源代码已被转换。

这不好,我想要build立它。 所以我打了“转换”。 它给了我select:

转换为Swift 3

那就是我想要的,Swift 3.看起来不错,我打了“下一个”。

选择目标

它默认为这3个选定的目标。 好,我打了下。

错误1 错误2

上帝的圣名叫什么

我想在Xcode 8上使用Alamofire的swift3出血边缘分支,针对iOS 9.0的Swift 3项目。 我哪里出了问题,我怎么才能做到这一点? FWIW我得到一堆错误,试图使用Alamofire的Swift 2.3分支,所以我知道这是我做错了什么。

升级到最新的Cocoapods(在这个答案的时候:版本1.1.0.beta.2 )通过命令:

gem install cocoapods --pre似乎为我的情况解决了这个问题。

我能够得到它的工作:

更新:

 # Uncomment this line to define a global platform for your project # platform :ios, '9.0' target 'PROJECT NAME HERE' do # Comment this line if you're not using Swift and don't want to use dynamic frameworks use_frameworks! pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3' end 

荚更新Alamofire

它应该更新到4.0.0-beta.2

获取请求时有一些变化:

旧:

 Alamofire.request(URL_NAME_HERE, withMethod: .get).responseJSON { response in //Code here. } 

新:

 Alamofire.request(URL_NAME_HERE, method: .get).responseJSON { response in //Code here. } 

希望这可以帮助。

你现在应该使用master分支,因为swift3分支已经在那里合并了。 此外,Xcode Migrator显示很多错误是正常的。 它是在编译代码,认为它是一个传统的Swift版本,但由于它已经在Swift 3.0中,所以错误是可以预料的。 最后,Xcode要求你转换成现代的Swift语法,可能是因为你没有使用最新版本的Cocoapods来安装Alamofire。

NB:事件虽然Cocoapods告诉你使用gem install cocoapods --pre ,我更喜欢使用gem update cocoapods --pre 。 否则,Cocoapods的旧版本将保持不变,并在使用pod update时仍然使用。 用pod --version检查你正在使用的pod --version

使用以下命令将该窗格更新到1.1.0.rc。

sudo gem install cocoapods

最后使用吹哨片断。

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

这有助于

解决办法是从这个改变你的请求

 pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3' 

对此

 pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'master' 

我通过使用解决了类似的问题

 pod 'Alamofire', '~> 4.0' 

在pod文件中。 我不得不调整到更高的最低部署目标。

我解决了类似的问题,使用:

 platform :ios, '9.0' use_frameworks! target 'PROJECT NAME HERE' do pod 'Alamofire' end 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 

我有同样的问题,但我卸载cocoapods,卸载alamofire,然后更新我的cocoa豆荚1.1.0.beta.2,然后在我的pod文件中使用Alamofire swift3-rebased分支

pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3-rebased'

打开了我的Project .xcworkspace文件,Alamofire的所有编译错误都消失了。

不知道这是否有助于任何人,但以防万一..我试图添加Alamofire到Xcode 8.0 GM使用CocoaPods独立的应用程序的示例快速应用程序..我不断得到转换为SWIFT 2.3或3.0窗口..但后来我试过从命令行到荚更新,它的工作。 不知道为什么..我认为独立应用程序的底层命令是相同的..所以不知道是什么造成了不同。 无论如何,在30分钟的浪费时间之后,我的作品。

CocoaPods独立Mac应用截图

这是命令行截图..相同的pod文件

在这里输入图像说明

你需要使用4.0版本pod 'Alamofire', '~> 4.0'注意到CocoaPods 1.1是需要的。