28 votes

Un module compilé avec Swift 3.0 ne peut pas être importé dans Swift 2.3

C'est ce que je fais :

import BSTableViewReorder

et obtenir l'erreur suivante :

Un module compilé avec Swift 3.0 ne peut pas être importé dans Swift 2.3

Que puis-je faire pour qu'il compile ? Je l'ai fait :

Edit > Convert -> Current Swift Syntax

Utilisation de Xcode 8 et de macOS Sierra.

Pour les deux : la cible et le projet j'ai les paramètres suivants de Use Legacy Swift Language Version

enter image description here enter image description here

Le projet est mon pod pour les dépendances de cocoapods. Je viens de convertir le projet en Swift 3.0 mais il ne compile pas.

27voto

Eugen Dimboiu Points 2160

Vous devrez modifier le Use Legacy Swift Language Version à NO - cela permet de s'assurer que votre projet utilisera swift 3.

Si vous voulez empaqueter votre projet en tant que POD (pour cocoapods), vous devrez ajouter un fichier nommé .swift-version (contenant une seule ligne, "3.0"). Ceci indiquera à cocoapods d'utiliser le compilateur swift 3.

Tout devrait fonctionner après ces changements.

0voto

Payal Points 56

Si vous utilisez des frameworks tiers, il suffit de les mettre à jour une fois pour Xcode 8.1 et de changer l'option Utiliser la version héritée du langage Swift en NO.

0voto

shoe Points 410

Dans mon cas, les développeurs du framework ont ajouté cette ligne dans le code qui était destiné au Podfile :

config.build_settings['SWIFT_VERSION'] = '2.3' # or '3.0'

comme vous pouvez le voir, ils sont réglés par défaut sur '2.3', ce qui a posé des problèmes car j'utilisais la version 3.0. En supprimant simplement le paramètre '2.3' # or et en laissant le '3.0' a réglé le problème.

0voto

mtc Points 79

Si les suggestions ci-dessus ne fonctionnent pas pour vous, essayez de supprimer ~Library/Developer/Xcode/DerivedData

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