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?
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.
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.
Vous ne compilez pas votre module Carthage avec la version Swift appropriée. Donc vous devez:
Sudo xcode-select -switch Xcode_beta_10.app
mise à jour de carthage - plate-forme iOS - non-utilisation-binaires
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
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
.