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:
我以后不能打,因为它告诉我:
Xcode 8将无法构build目标“Alamofire”,并且某些编辑function将无法正常工作,直到该目标中的Swift源代码已被转换。
这不好,我想要build立它。 所以我打了“转换”。 它给了我select:
那就是我想要的,Swift 3.看起来不错,我打了“下一个”。
它默认为这3个选定的目标。 好,我打了下。
上帝的圣名叫什么
我想在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分钟的浪费时间之后,我的作品。
这是命令行截图..相同的pod文件
你需要使用4.0版本pod 'Alamofire', '~> 4.0'
注意到CocoaPods 1.1是需要的。