web-dev-qa-db-fra.com

Alamofire Xcode 8 Swift 3 génère 786 erreurs de compilation

J'utilise le Xcode 8.0 GM. J'ai créé une application à affichage unique par défaut avec ma cible de déploiement définie sur 9.0.

Dans mon Podfile, je cible la branche saignante de Edge 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

Je lance pod install et reçois ... Installing Alamofire (4.0.0-beta.2) ... fantastique, aucun problème. J'ouvre MyProject.xcworkspace.

Cela apparaît:

 convert Alamofire to latest syntax

Je ne peux pas frapper plus tard parce que ça me dit:

Xcode 8 ne pourra pas construire la cible «Alamofire», et certaines fonctionnalités d'édition ne fonctionneront pas correctement tant que le code source Swift de cette cible n'aura pas été converti.

Ce n'est pas bon, je veux le construire. Alors j'ai cliqué sur "Convert". Cela me donne des options:

 convert to Swift 3

Eh bien c'est ce que je veux, Swift 3. J'ai l'air bien, j'ai cliqué sur "suivant".

 select targets

Il utilise par défaut ces 3 cibles sélectionnées. Ok bien, je frappe le suivant.

 error 1  error 2

Que dans le saint nom de Dieu ...

Je souhaite utiliser la branche Swift3 bleeding Edge d'Alamofire sur un projet Xcode 8, Swift 3 visant iOS 9.0. Où est-ce que je me suis trompé et comment puis-je le faire fonctionner? FWIW Je reçois un tas d’erreurs en essayant d’utiliser la branche Swift 2.3 d’Alamofire, alors je sais que c’est quelque chose que je fais mal.

32
Aaron

Mise à niveau vers les derniers Cocoapods (au moment de cette réponse: version 1.1.0.beta.2) via la commande:

gem install cocoapods --pre semblait résoudre le problème pour ma situation.

22
Aaron

Vous devez utiliser la branche master maintenant car la branche Swift3 y a été fusionnée. De plus, il est normal que Xcode Migrator affiche autant d’erreurs. C’est pourquoi il compile le code en pensant que c’est une version Swift classique, mais comme il est déjà dans Swift 3.0, il faut s’attendre à des erreurs. Enfin, Xcode vous demande de convertir à la syntaxe moderne Swift, probablement parce que vous n'avez pas utilisé la dernière version de Cocoapods pour installer Alamofire.

NB: si Cocoapods vous dit d’utiliser gem install cocoapods --pre, je préfère utiliser gem update cocoapods --pre. Sinon, l'ancienne version de Cocoapods reste et est toujours utilisée avec pod update. Vérifiez quelle version vous utilisez avec pod --version.

7
Jonas Zaugg

J'ai pu le faire fonctionner: 

mettre à jour:

# 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

mise à jour de pod Alamofire

Il devrait mettre à jour à 4.0.0-beta.2

Il y a quelques changements lors de l'obtention d'une demande:

vieux:

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

nouveau:

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

J'espère que cela t'aides.

7
weskam

La solution est de changer votre demande de cette 

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

pour ça 

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

Mettez à jour le pod vers 1.1.0.rc à l'aide de la commande ci-dessous.

Sudo gem install cocoapods

utilisez l'extrait de coup à la fin.

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

cA aide.

4
Rajesh Panda

J'ai résolu un problème similaire en utilisant 

pod 'Alamofire', '~> 4.0'

dans le fichier pod. J'ai dû m'adapter à une cible de déploiement minimale plus élevée. 

2
Nakul Sudhakar

J'ai résolu le même problème en utilisant:

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
2
urvashi bhagat

J'ai eu le même problème, mais j'ai désinstallé des cocoapodes, désinstallé alamofire, puis mis à jour mes gousses de cacao vers la version 1.1.0.beta.2, puis utilisé la branche d'Alamofire basée sur Swift3 dans mon fichier de pod.

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

a ouvert mon fichier Project .xcworkspace et toutes les erreurs de compilation pour Alamofire ont disparu. 

0
Cory Billeaud

Je ne suis pas sûr que cela aide quelqu'un, mais juste au cas où ... J'ai essayé d'ajouter Alamofire à un exemple d'application rapide sur Xcode 8.0 GM à l'aide de l'application autonome CocoaPods .. J'ai continué à obtenir le Convert to Swift 2.3 ou 3.0. fenêtre .. mais alors j'ai essayé de la mise à jour de pod en ligne de commande et cela a fonctionné Je ne sais pas pourquoi. Je suppose que les commandes sous-jacentes de l'application autonome sont les mêmes .. alors je ne sais pas ce qui a fait la différence. Dans tous les cas, après 30 minutes de temps perdu, le mien fonctionne. 

 CocoaPods standalone Mac app screenshot

Ceci est la capture d'écran en ligne de commande. Même fichier pod 

 enter image description here

0
Zsolt

Vous devez utiliser la version 4.0pod 'Alamofire', '~> 4.0' Notez que CocoaPods 1.1 est nécessaire.

0
Sam