web-dev-qa-db-fra.com

Le module compilé avec Swift 3.0 ne peut pas être importé dans Swift 3.0.1

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

87
HH887

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.

171
zirinisp

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/
19
i-chou

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.

10
Clay Garrett

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
9
Zaid Pathan

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
9
kanekin

Comme @zirinisp a dit:

  1. Vous pouvez utiliser la commande suivante: carthage update --platform iOS --no-use-binaries
  2. A l'aide de la commande suivante: xcrun Swift -version pour voir la version Swift
  3. Faites ceci: Xcode->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".
  4. À l'aide de la commande suivante: xcrun Swift -version, vous pouvez voir que la version Swift est 3.0.1
  5. Régler Use Legacy Swift Language Version = NO

J'espère que cela vous aidera

5
kris
  1. Déplacez la version bêta/GM si le Xcode dans le dossier/Applications et nommez-la Xcode-beta
  2. 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.

  1. 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/

  2. 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

  3. Clean & Build

1
Tul

J'ai eu exactement le même problème avec la bibliothèque XCTest_Gherkin, cela a fonctionné pour moi:

  1. Product -> Scheme -> XCTest-Gherkin
  2. Product -> Build

J'espère que ça aide. J'utilise des cocoapodes.

0
user248672

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
0
John Cromie