问题
I am using the Xcode 8.0 GM. I created a default single-view app with my deployment target set to 9.0.
In my Podfile I'm targeting the bleeding edge Swift 3 branch:
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
I run pod install
and get ... Installing Alamofire (4.0.0-beta.2)
... fantastic, no problems. I open MyProject.xcworkspace
.
This pops up:
I can't hit later because it tells me:
Xcode 8 will not be able to build the target “Alamofire”, and certain editing features will not function properly until the Swift source code in this target has been converted.
That's no good, I want to build it. So I hit "Convert". It gives me options:
Well that's what I want, Swift 3. Looks good, I hit "next".
It defaults to these 3 selected targets. Ok fine, I hit next.
What in God's Holy name...
I want to use Alamofire's swift3
bleeding edge branch on an Xcode 8, Swift 3 project targeting iOS 9.0. Where did I go wrong and how can I get this working? FWIW I get a bunch of errors trying to use Alamofire's Swift 2.3 branch so I know it's something I'm doing wrong.
回答1:
Upgrading to the latest Cocoapods (at the time of this answer: version 1.1.0.beta.2
) via the command:
gem install cocoapods --pre
seemed to solve the issue for my circumstance.
回答2:
I was able to get it working:
update:
# 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
pod update Alamofire
It should update to 4.0.0-beta.2
There are a few changes when getting a request:
old:
Alamofire.request(URL_NAME_HERE, withMethod: .get).responseJSON { response in
//Code here.
}
new:
Alamofire.request(URL_NAME_HERE, method: .get).responseJSON { response in
//Code here.
}
Hope this helps.
回答3:
You should use the master
branch now since the swift3
branch has been merged there. Moreover it's normal for the Xcode Migrator to show that many errors. What it's doing s compiling the code thinking it's a legacy Swift version but since it's already in Swift 3.0, the errors are to be expected. Finally, Xcode is asking you to convert to modern Swift syntax probably because you haven't used the latest version of Cocoapods to install Alamofire.
NB: event though Cocoapods tells you to use gem install cocoapods --pre
, I prefer using gem update cocoapods --pre
. Else, the older version of Cocoapods stays and still is used when using pod update
. Check what version you're using with pod --version
.
回答4:
Update the pod to 1.1.0.rc using the below command.
sudo gem install cocoapods
use the blow snippet at the 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
this helps.
回答5:
The solution is to change your request from this
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'swift3'
to this
pod 'Alamofire', :git => 'https://github.com/Alamofire/Alamofire.git', :branch => 'master'
回答6:
I solved a similar issue by using
pod 'Alamofire', '~> 4.0'
in the pod file. I did have to adjust to a higher minimum deployment target.
回答7:
I solved similar issue by using :
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
回答8:
I had the same issue, but I uninstalled cocoapods, uninstalled alamofire, then updated my cocoa pods to 1.1.0.beta.2, then used the swift3-rebased branch of Alamofire in my pod file
pod 'Alamofire',
:git => 'https://github.com/Alamofire/Alamofire.git',
:branch => 'swift3-rebased'
opened my Project.xcworkspace file and all the compiling errors for Alamofire were gone.
回答9:
Not sure if this helps anyone but just in case.. I tried to add Alamofire to a sample quick app on Xcode 8.0 GM using the CocoaPods standalone app.. I kept getting the Convert to swift 2.3 or 3.0 window.. but then I tried from the command line to pod update and it worked. Have no idea why.. I assume the underlying commands for the standalone app are the same.. so not sure what made the difference. In any case after 30 minutes of wasted time mine works.
This is the command line screenshot.. same pod file
回答10:
You need to use version 4.0pod 'Alamofire', '~> 4.0'
notice that CocoaPods 1.1 is needed.
来源:https://stackoverflow.com/questions/39380939/alamofire-xcode-8-swift-3-results-in-786-compile-errors