Histoire courte: Xcode 10 est défini sur Swift 4, mais il utilise Swift 4.2.
Longue histoire: notre projet n'est pas prêt pour Swift 4.2, car nos cadres dépendants ne sont pas encore Swift 4.2. Mais, j'aimerais au moins utiliser Xcode 10.
"Swift --version Apple Swift version 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)"
"Le module compilé avec Swift 4.1.2 ne peut pas être importé par le compilateur Swift 4.2 : .../App/Carthage/Build/iOS/RealmSwift.framework/Modules/RealmSwift.swiftmodule/arm64.swiftmodule"
Pour moi, cela signifie que ma version de Swift (4.1.2) est correctement configurée et que Xcode tente toujours d'utiliser la mauvaise version de Swift (4.2).
Quelqu'un a-t-il des suggestions pour résoudre ce problème? Est-ce que je manque quelque chose? Bug Xcode?
Je ne suis pas positif, mais je suppose que c'est la raison:
J'ai des outils de ligne de commande configurés pour utiliser Xcode 9.4.1
Vous devez recompiler vos dépendances Swift 4 en utilisant Xcode 10, car Swift n’est pas ABI-stable , c’est-à-dire que les fichiers binaires compilés avec différentes versions du compilateur ne sont pas compatibles. Et même les fichiers binaires de Swift 4.0 compilés avec différentes versions de Xcode peuvent ne pas être compatibles.
Je n’ai pas beaucoup d’expérience avec Carthage, mais j’imagine que vous devriez utiliser Xcode 10 comme outil de ligne de commande, mais vous devez définir une version linguistique différente de Swift qui sera utilisée par Xcode 10. Elle devrait probablement être spécifiée dans le projet (dans ce cas, RealmSwift), ou en utilisant des variables d'environnement, mais vous aurez besoin de quelqu'un d'autre pour répondre avec plus de détails, j'ai peur.
Utiliser Realm avec Xcode 10 nécessite de le construire à partir des sources. Dans Terminal, écrivez:
git clone --recursive https://github.com/realm/realm-cocoa.git
cd realm-cocoa
sh build.sh ios-Swift
Si le module a été obtenu à l'aide de Cocoapods, vous pouvez accéder à votre répertoire podfile à partir du terminal et exécuter:
pod install
Cela devrait recompiler le module pour Swift 4.2. Cela a fonctionné pour moi, espérons que cela fonctionne pour vous.
J'ai eu le même problème et ensuite j'ai réalisé que je n'avais pas sélectionné Xcode 10 en tant que Xcode
. Essayer:
Sudo xcode-select -s /Applications/Xcode10.app
De même, si vous souhaitez basculer entre Xcode9 et 10, je vous recommande ce qui suit: Si vous passez de 9 à 10, exécutez mv Carthage Carthage9
puis reconstruisez Carthage. Chaque fois que vous souhaitez revenir en arrière, déplacez Carthage sur Carthage10
et faites mv Carthage9 Carthage
. Cela vous fera gagner beaucoup de temps à construire.