web-dev-qa-db-fra.com

Le module compilé avec Swift 4.1.2 ne peut pas être importé dans Swift 4.1.50: erreur Xcode 10

Swift 4.2 est sorti et je reçois ce message d'erreur dans mon projet lorsque j'utilise aussi ObjectMapper et d'autres modules:

Le module compilé avec Swift 4.1.2 ne peut pas être importé dans Swift 4.1.50

Alors, comment puis-je dire à Xcode de commencer à mettre à jour mon projet et à le migrer vers Swift 4.2?

16
Sahil Kapoor

Dans Swift 4.2 il y a un changement dans la mise en œuvre de implicitement non enveloppé facultatif (IUO)}, selon le blog Swift maintenant implicite non enveloppé optionnel T! sera considéré comme T? avec et un indicateur supplémentaire permettant au compilateur de savoir qu’il s’agit d’un déroulement implicite facultatif. 

Le nouveau modèle mental pour les IUO est celui que vous envisagez! être un synonyme de? avec l'ajout qu'il ajoute un drapeau sur la déclaration informer le compilateur que la valeur déclarée peut être implicitement non emballé.

En raison de cette modification, il est possible que vous rencontriez un problème de compatibilité de la source qui vous oblige à modifier votre code avant sa compilation. 

Dans Swift 3, des déclarations telles que var a: Int? entraînerait un type optionnel, et des déclarations telles que var b: String! aurait pour résultat que b aura le type ImplicitlyUnwrappedOptional. Il a changé dans Swift 4.2, d’où son erreur d’affichage pour ObjectMapper pour Xcode 10 fourni avec Swift 4.2 et une implémentation similaire a été effectuée pour 3. * pour Xcode 10.

Dans la bibliothèque Objectmapper, certaines déclarations de fonctions indiquaient des avertissements plus tôt pour Swift 4.1, mais maintenant une erreur pour Swift 4.2. Reportez-vous à l'image ci-dessous pour les avertissements dans Xcode 9.4 et Swift 4.1.

 enter image description here

Il y a quelques demandes d'extraction sur le référentiel ObjectMapper GitHub qui a résolu le problème, mais elles attendent la nouvelle version bêta de Xcode, conformément aux discussions, car elles utilisent la directive conforme fonctionnalité récemment acceptée publié avec la nouvelle version bêta de Xcode.

Update:Le problème est résolu dans la version 3.3.0 d'ObjectMapper. 

8
Suhit Patil

Vous ne compilez pas votre module Carthage avec la version Swift appropriée. Donc vous devez:

  1. Assurez-vous que votre terminal pointe vers votre application Xcode 10 Beta et non vers votre Xcode normal:

Sudo xcode-select -switch Xcode_beta_10.app

  1. Mettez à jour vos fichiers Carthage:

mise à jour de carthage - plate-forme iOS - non-utilisation-binaires

  1. Retournez à votre projet dans Xcode, nettoyez, construisez
25
Fouad

Exécutez la commande ci-dessous dans le répertoire de votre projet à l’aide du terminal. Il mettra à jour votre pod. J'espère que cela résoudra votre problème.

pod update ObjectMapper
1
Sagar Unagar

Vous devez changer la version bêta de Xcode dans terminal.Et supprimer l'ancienne version du document Carthage dans votre projet. mettre à jour carthage carthage update --platform iOS --no-use-binaries.

0
user3488542