Notes de version de Xcode 9 indique que la compilation Swift 3 est prise en charge:
Un compilateur pour Swift 4 et Swift 3 , Swift 4 et Swift 3 cibles peuvent être compilées ensemble dans le même projet.
J'ai installé Xcode 9 beta. Mais lorsque je clique sur Construire, il affiche de nombreuses erreurs. Certaines préparations spéciales doivent-elles être effectuées lorsque vous utilisez Swift 3 dans Xcode 9?
UPD:
Le module compilé avec Swift 3.1 ne peut pas être importé dans Swift 4.0
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], 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!
Vous décidez quand et si vous souhaitez migrer cible par cible lorsque cela convient à votre projet. Bien que la migration vers Swift 4.2 soit définitivement encouragée, il ne s’agit pas d’un processus "tout ou rien", car les cibles Swift 3, 4 et 4.2 peuvent coexister et se lier entre elles.
Vous souhaitez avoir une version de cocoapod différente de celle de votre projet, vous devez alors apporter les 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 avoir exécuté pod update, votre xcode met à jour de force la version du projet de votre cocoapod, sélectionnez dans ce cas le projet cocoapod pod et modifiez la version Swift dans les paramètres de construction.
J'avais le même problème - (J'ai installé le module dont la version Swift était 3x et la version Swift de mon projet était la version Swift 4. J'ai eu tellement d'erreurs de compilation. Plus tard, j'ai changé le Swift version 4 à 3.2 et essayé de construire le projet, encore une fois, j'ai eu des erreurs de compilation, ce qui est dû au fait que je lance l'installation du pod alors que mon projet était dans Swift 4.)
Xcode 9 nécessite que le framework soit construit avec Swift 3.2 ou supérieur. Allez à https://github.com/emaloney/CleanroomLogger et cliquez sur Download Zip. Ouvrez le xcodeproj dans Xcode 9. Appuyez sur ⌘B. CleanroomLogger.framework passe du rouge au noir. Faites glisser le cadre dans votre projet. Voir la question connexe: Problème de domaine avec Swift 3.1