J'ai mis à niveau Xcode vers la version 8.1 GM et je reçois maintenant l'erreur ci-dessous pour SwiftyJSON. Les autres cadres importés semblent fonctionner. Existe-t-il un moyen de forcer cela à fonctionner dans Swift 3 jusqu'à ce que SwiftyJSON mette à niveau son framework? J'ai utilisé Carthage pour importer/mettre à jour des frameworks. J'ai aussi essayé de changer Use Legacy Swift language version
On et Off en vain.
Le module compilé avec Swift 3.0 ne peut pas être importé dans Swift 3.0.1: Modules/SwiftyJSON.swiftmodule/arm64.swiftmodule
SwiftyJson est en train d'être téléchargé précompilé par Carthage. Le téléchargement précompilé se fait avec Swift Version 3.0. Cela fait que le compilateur se plaint que la version n'est pas correcte. En utilisant la commande suivante:
carthage update --platform iOS --no-use-binaries
SwiftyJson (et tous les autres frameworks de Carthage) sera compilé localement en utilisant la version locale de Swift (3.0.1) et le compilateur ne se plaindra plus.
Supprimez la tâche d'application de DerivedData et reconstruisez-la. l'erreur peut être corrigée.
Le chemin DerivedData ressemble à ceci:
~/Library/Developer/Xcode/DerivedData/
Assurez-vous d'avoir placé le nouveau package XCode 8.1 GM dans votre dossier Applications. Nous avons rencontré ce problème lorsque l'un d'entre nous exécutait Carthage pour mettre à jour nos dépendances, mais n'avait pas remplacé l'ancienne application XCode 8.0 dans le dossier des applications (8.1 GM fonctionnait à partir du Bureau).
Vous voulez vous assurer que lorsque vous exécutez ce qui suit dans le terminal: xcrun Swift -version
, il retourne Apple Swift version 3.0.1
.
La mise à jour par défaut de Xcode
vers une nouvelle sur le terminal a fonctionné pour moi.
Étape 1: Utilisez la commande suivante pour mettre à jour la version de Xcode vers la dernière version sur le terminal. Ref
Sudo xcode-select -switch <path/to/>Xcode.app
Étape 2: Maintenant, essayez la commande carthage update
carthage update --platform iOS
Juste pour donner les dernières mises à jour:
Carthage a publié le version 0.2 le 27 février 2017.
Carthage utilise maintenant uniquement le binaire pré-build si le binaire pré-build disponible est compatible .
Cela étant dit, vous n’êtes plus obligé d’utiliser: --no-use-binaries
pour éviter un framework de pré-compilation incompatible.
Assurez-vous donc que vous avez la version de carthage supérieure à 0.20
et faites simplement:
carthage update --platform iOS
Comme @zirinisp a dit:
carthage update --platform iOS --no-use-binaries
xcrun Swift -version
pour voir la version SwiftXcode->preferences->locations
pour effacer les données dérivées et les données d’archives, le plus important est de changer les outils de ligne de commande en "Xcode 8.1
".xcrun Swift -version
, vous pouvez voir que la version Swift est 3.0.1Use Legacy Swift Language Version = NO
J'espère que cela vous aidera
Vérifiez la sortie de:
xcrun Swift --version
en exécutant cette commande dans terminal, sa sortie doit correspondre à la version Swift que vous voulez compiler l'application, car Carthage utilise la sortie de cette commande pour déterminer la version locale Swift.
Mettez à jour la version de Xcode vers la dernière version du terminal en exécutant la commande suivante:
Sudo xcode-select -s /Applications/Xcode-beta.app/
Construisez les bibliothèques pour iOS et empêchez Carthage de télécharger des fichiers binaires précompilés existants (mais incompatibles) en exécutant la commande suivante:
carthage update --platform iOS --no-use-binaries
Clean & Build
J'ai eu exactement le même problème avec la bibliothèque XCTest_Gherkin
, cela a fonctionné pour moi:
Product
-> Scheme
-> XCTest-Gherkin
Product
-> Build
J'espère que ça aide. J'utilise des cocoapodes.
Dans Xcode Paramètres de construction, assurez-vous que votre chemins de recherche dans le cadre contient le dossier Carthage Build approprié:
$(inherited)
$(PROJECT_DIR)/Carthage/Build/iOS