43 votes

Comment construire un projet Swift 3 sur Xcode 9?

Xcode 9 Notes de Version dit que Swift 3 compilation est pris en charge:

Un compilateur pour Swift 4 et Swift 3, Swift 4 et Swift 3 cibles peuvent être regroupées dans le même projet.

J'ai installé Xcode 9 beta. Mais quand je presse le Construire, il montre des tas d'erreurs. Sont quelques préparations spéciales devez faire lors de l'utilisation de Swift 3 dans Xcode 9?

UPD: Module compiled with Swift 3.1 cannot be imported in Swift 4.0

Module compilé avec Swift 3.1 ne peut pas être importé dans Swift 4.0

62voto

vadian Points 29149

Sélectionnez la cible, allez Build Settings > Swift Language Version :

entrez la description de l'image ici

11voto

Jeremie Points 485

Toutes les réponses ci-dessus répondent à la mauvaise question. Lorsque vous utilisez Xcode 9, vous utilisez le compilateur Swift 4 (même si vous l’utilisez pour compiler le code Swift 3) afin de résoudre ce problème, recompilez-le à l’aide du compilateur / Xcode approprié.

Si vous essayez de le faire via la ligne de commande, vous pouvez utiliser sudo xcode-select -switch pour basculer entre les versions de xcode. Bonne chance!

4voto

Shubham Mishra Points 401

Mise à jour de Xcode 10.1 et Swift 4.2

Swift 3, 4 et 4.2 objectifs peuvent coexister et de relier entre elles.

Vous décidez quand et si vous souhaitez migrer sur une cible de base lorsque cela a du sens pour votre projet. Lors de la migration vers Swift 4.2 certainement encouragé, il n'est pas un tout-ou-rien de processus, comme Swift 3, 4 et 4.2 objectifs peuvent coexister et de relier entre elles.

Différents cocoapod et les différentes version de projet peuvent également coexister.

Vous souhaitez avoir différentes cocoapod version par rapport à votre projet de version, alors vous devriez faire des modifications suivantes à la fin de votre fichier pod:

post_install do |installer|
    print "Setting the default SWIFT_VERSION to 4.2\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.2'
    end

    installer.pods_project.targets.each do |target|
        if ['SomeTarget-iOS', 'SomeTarget-watchOS'].include? "#{target}"
            print "Setting #{target}'s SWIFT_VERSION to 3.0\n"
            target.build_configurations.each do |config|
                config.build_settings['SWIFT_VERSION'] = '3.0'
            end
        else
            print "Setting #{target}'s SWIFT_VERSION to Undefined (Xcode will automatically resolve)\n"
            target.build_configurations.each do |config|
                config.build_settings.delete('SWIFT_VERSION')
            end
        end
    end
end

Parfois, même après l'exécution de la gousse de mise à jour de votre xcode avec force la mise à jour de votre cocoapod de la version de projet, alors dans ce cas, sélectionnez cocoapod gousse de projet et de changement rapide de la version dans les paramètres de construction.

3voto

Jeni Khant Points 103

J'ai eu le même problème - (j'ai installé gousse swift version 3x et mon projet swift version a été rapide 4. Donc j'ai eu tant d'erreurs du compilateur. Plus tard, j'ai changé la Swift version de 4 à 3.2, et a essayé de construire le projet, encore une fois j'ai eu des erreurs de compilation. Je pense que se produire en raison de I run pod installer tandis que mon projet était en Swift 4.)

  • D'abord, vous devez modifier le "Swift version de langue" à partir de paramètres de construction.
  • Si vous avez installé un pod puis, changeant seulement "Swift Version en Langue" ne va pas aider. Vous devrez peut-être exécuter pod installer pour le projet.

2voto

Chris Woolfe Points 1

Xcode 9 besoins le cadre qui doit être construit avec Swift 3.2 ou supérieur. Aller à https://github.com/emaloney/CleanroomLogger et cliquez sur Télécharger le ZIP. Ouvrez le xcodeproj dans Xcode 9. Appuyez Sur ⌘B. CleanroomLogger.cadre passe du rouge au noir. Faites glisser le cadre de votre projet. Voir la question: Royaume problème avec Swift 3.1

build it

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X