web-dev-qa-db-fra.com

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

Apparemment, j’ai réussi à construire mon projet sous Xcode 9 beta et maintenant je n’ai plus que l’erreur

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

Lorsque j'exécute le projet dans Xcode 8. Le module dans mon cas est Alamofire. J'ai essayé de redémarrer Xcode mais rien ne se passe, aucune idée pour résoudre ce problème?

16
user8118543

Vous avez deux options que vous pouvez faire:

Clean le projet, puis essayez de re-build votre solution et voyez si cela fonctionne. 

Si cela ne fonctionne pas et que vous obtenez toujours le même message d'erreur, procédez comme suit et cela devrait fonctionner pour vous:

  1. Ouvrez votre podfile et supprimez Alamofire
  2. Exécuter pod update
  3. Ajoutez de nouveau Alamofire à votre podfile
  4. Exécuter pod update
  5. Quand ceci est fait, clean votre projet et lancez-le
24
Rashwan L

Même problème ici mais en utilisant Carthage. Et voici la réponse:

  • rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
  • supprimer le dossier Carthage pour le projet
  • Mise à jour de Carthage: carthage update --platform iOS

Et voilà!

19
Dominique Vial

J'ai eu le même problème et le nettoyage du dossier de construction a aidé:

Command+Option+Shift+K

ou

Product -> Option+Clean

5
Tata Grigory

Supprimer simplement les données dérivées a fonctionné pour moi, pas besoin de réinstaller Pod

2
Harsha

Ajoutez les lignes suivantes à la fin de votre fichier pod:

post_install do |installer|
    print "Setting the default Swift_VERSION to 4.0\n"
    installer.pods_project.build_configurations.each do |config|
        config.build_settings['Swift_VERSION'] = '4.0'
    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
0
HSAM

J'ai rencontré ce problème dans un projet où la dépendance est gérée par Carthage. Dans mon cas, je n'ai pas défini l'outil de ligne de commande dans xcode (saisissez xcodebuild -version, vous saurez si vous l'avez configuré ou non), aussi la première étape consiste à aller à XCode -> Préférences -> Emplacements puis sélectionnez le xcode que vous souhaitez utiliser comme outil de ligne de commande. Ensuite, vous pouvez suivre les étapes mentionnées par @Domsware ci-dessus pour reconstruire tous les frameworks que vous allez utiliser.

=============================================

Même problème ici mais en utilisant Carthage. Et voici la réponse:

rm -rf ~/Library/Caches/org.carthage.CarthageKit/DerivedData
delete the Carthage folder for the project
Update Carthage: carthage update --platform iOS

=============================================

Ensuite, n'oubliez pas de supprimer les anciens liens sous "Structures et bibliothèques liées" et faites glisser tous les structures du dossier/Carthage sous votre projet vers "Structures et bibliothèques liées". 

Alors voilà!

Je suppose que pour ceux qui utilisent CocoaPods (Avertissement: je n’ai pas rencontré ce problème dans un projet où CocoaPods est le gestionnaire de dépendances), la solution serait exécutée dans le terminal:

$ pod deintegrate
$ pod clean
$ pod install

où vous pourriez avoir besoin d'installer les outils 'deintegrate' et 'clean' pour CocoaPod

$ Sudo gem install cocoapods-deintegrate cocoapods-clean

plus de détails voir post Comment supprimer CocoaPods d’un projet?

0
infinity_coding7