J'ai un projet iOS Swift avec plusieurs cibles.
La conversion de la première cible en Swift 5 a été facile.
En convertissant la deuxième cible en Swift 5, Xcode 10.2 tente de compiler des fichiers qui n'existent clairement que dans la première cible et échoue (car il ne compile pas tous les fichiers de la première cible et se plaint des identifiants non résolus). p >
Que puis-je faire pour que Xcode ne compile que les fichiers qui font partie de la cible lors de la conversion vers Swift 5?
Comment puis-je convertir mon projet en Swift 5?
Nettoyer le dossier Build et redémarrer Xcode 10.2 n'aide pas.
4 Réponses :
J'ai trouvé une solution de contournement:
Avec cette approche, j'ai pu convertir mon projet.
(Voir aussi le commentaire de Cœur, je pense que leur conversion manuelle fonctionnerait aussi)
Comment réinitialiser le projet?
J'utilise git + SourceTree pour avoir chaque bit de mon projet, y compris tous les fichiers de configuration dans git. Évidemment, cela n'aide que si vous mettez votre projet dans git avant de commencer votre conversion.
Je ne sais pas quel est le problème, si vous pouviez déposer un rapport de bogue sur http://bugreport.apple .com , l'équipe d'Apple assurera un suivi avec vous.
Notez qu'il existe un guide de migration qui peut vous être utile ici: https://swift.org / migration-guide-swift5
Je viens de suivre ce processus et j'ai pu trouver une solution assez simple à partir d'un indice dans la dernière phrase du guide de migration https://swift.org/migration-guide-swift5/
Lorsque j'essayais de convertir chaque cible individuellement dans mon projet, la deuxième cible échouait à cause du code partagé avec la première cible déjà convertie. La solution consiste à créer un nouveau schéma qui inclut toutes les cibles qui doivent être migrées en un seul passage.
Cliquez sur le bouton du schéma pour afficher le menu déroulant et sélectionnez "Nouveau schéma ..."
Créez le schéma, puis sélectionnez-le dans le menu déroulant et choisissez "Modifier le schéma ..."
Dans la section "Construire", utilisez le bouton "+" pour ajouter toutes les cibles que vous devez convertir au schéma.
Construisez le nouveau schéma avec la version actuelle de Swift pour confirmer que toutes les cibles se construisent correctement.
Utilisez Edit -> Convert -> "To Current Swift Syntax ..." pour démarrer la conversion
Cela a fonctionné pour moi dans un projet avec 15 cibles avec beaucoup de code Swift partagé qui était dans la version 4.0.
Si je comprends bien. Vous avez correctement migré une cible et une autre est bloquée sur l'ancien swift. J'ai eu une situation similaire, cliquez sur la cible, allez dans 'Build Settings', recherchez 'swift' puis changez manuellement la 'Swift Language Version' en 5. Ensuite, puisque vous avez déjà converti le code, il devrait simplement compiler .
chaque cible avait des classes que l'autre n'avait pas
Swift 5 étant compatible avec Swift 4.2, si vous rencontrez des problèmes avec l'assistant de migration, vous pouvez simplement essayer de changer SWIFT_VERSION en 5.0 et résoudre les rares erreurs manuellement.
Notez que l'assistant de migration Swift essaiera de créer toutes les architectures (pas seulement celle active), ce qui peut expliquer certains problèmes. Mais pour pouvoir vraiment aider, nous aurions besoin d'un exemple de projet et / ou de plus de détails sur les erreurs.