Dans Xcode 9, j'essaie de faire la conversion automatique en Swift 4. Il échoue avec le message suivant:
Conversion en courant Swift Échec de la syntaxe
Veuillez vous assurer que toutes les cibles sélectionnées se sont correctement construites avec la version Swift Swift $ avant de tenter une migration.
Il se plaint d'un module manquant. Mais quand je fais une construction régulière, il n'y a aucun problème. Je ne sais pas si cela est pertinent, mais le module (dont Xcode se plaint est manquant) a déjà été converti en Swift 4 plus tôt (dans son propre projet).
Remarque: Aucun Cocoapods/Carthage utilisé ici.
Remarque: Deux solutions ont essayé (et ont fonctionné) mais ne résolvent pas le problème sous-jacent.
J'ai également eu ce problème lors de la conversion de mon projet en Swift 4.0. On dirait que le problème apparaît lorsque vous essayez de convertir la cible qui importe un framework qui est déjà dans Swift 4.0. Sur votre capture d'écran, vous essayez de convertir " RecipeTextParser " qui importe " SovaTools 'qui est déjà Swift 4.0.
J'ai trouvé une solution sale, mais qui fonctionnait. Vous pouvez utiliser une ancienne version (Swift 3.2) de ' SovaTools ' lors de la conversion. Vous devez PAS vérifier sa marque dans la fenêtre de sélection de cible de l'outil de conversion. Ensuite, lorsque ' RecipeTextParser ' sera correctement converti, vous pouvez utiliser Swift 4.0 ' SovaTools 'version à nouveau.
J'ai eu cette erreur et dans mon cas, l'un de mes pods (celui dont se plaignait Xcode) était une cible Swift 4 et les autres étaient Swift 3.2. En regardant les journaux de construction, il semble que Xcode ait construit ce cadre dans un endroit et le cherchait dans un autre. Lorsque j'ai rétabli ce Pod vers une version plus ancienne (qui utilisait Swift3.2), le problème a disparu. Évidemment, un bogue Xcode. HTH
Mettez à jour votre pod et cela résoudra le problème.
Pour mettre à jour le pod:
Cela a résolu mon problème.
La fonctionnalité de migration de langage Xcode (Xcode 9) n'est pas aussi précise qu'elle peut migrer votre code/projet complet d'une version Swift à une autre avec une tolérance zéro. Elle ignore peu de migration de code pour nous (développeurs Il peut s'agir d'un bug ou d'une inexactitude de l'outil. Mais vous devez également faire un effort manuel pour migrer complètement Swift version linguistique de votre projet/code.
Maintenant, selon votre instantané, Xcode affiche et une erreur pour le framework 'RecipeTextParser'. Je pense que c'est un cadre externe/tiers. Autre point à noter, vous avez intégré ce framework à l'aide de CocoaPods:
L'un des éléments suivants peut être à l'origine de l'échec de la migration de code:
Suggestion comme solution:
Un effort manuel est nécessaire pour migrer complètement le code entre Swift langues. J'ai essayé Swift migration avec les options ci-dessus et tous mes projets sont maintenant compatibles avec Swift 4.