J'ai récemment mis à jour xcode avec la version 9. Auparavant, dans Xcode 8.x, pod update
m'indique un code de mise à jour pour convertir le code en Swift 3, ce qui résout les erreurs. Mais maintenant, il me donne cette erreur:
Le paramètre de construction «Swift Language Version» (Swift_VERSION) doit être défini à une valeur prise en charge pour les cibles qui utilisent Swift. Ce paramètre peut être défini dans l'éditeur de paramètres de construction.
Pour cette erreur, j’ai essayé Build Settings > Swift Language Version
et c’était Swift 3.2 Mais comme l’appel de mise à jour a réinstallé certains des pods comme Alamofire, il est dit d’installer Xcode 8.x pour convertir le code en Swift 3. devez-vous installer une version supplémentaire avec le dernier Xcode? Si oui, comment puis-je installer Xcode 8 avec Xcode 9?
Répondez à votre question:
Vous pouvez télécharger Xcode 8.x à partir de Apple Download Portal ou Télécharger Xcode 8.3.3 (ou voir: Où télécharger l'ancienne version de Xcode ), si vous avez un compte de développeur premium ( Identifiant Apple). Vous pouvez installer et travailler à la fois avec Xcode 9 et Xcode 8.x dans un système unique (mac). (Assurez-vous que Command Line Tools
supporte les deux versions de Xcode pour fonctionner avec terminal (voir: Comment installer 'Outil de ligne de commande' ))
Conseil: Comment migrer votre version de Swift compatible avec le code Xcode 9 (Swift 3.2 ou 4)
Xcode 9 autorise uniquement la conversion/migration de Swift 3.0
à Swift 3.2/4.0
. Ainsi, si la version actuelle de la langue Swift de votre projet est inférieure à 3.0, vous devez migrer votre code dans une version compatible avec Swift 3 à l'aide de Xcode 8.x.
Il s’agit d’un message d’erreur courant que Xcode 9 indique s’il identifie la langue Swift au-dessous de la version 3.0 pendant la migration.
Swift 3.2 est pris en charge par Xcode 9 et Xcode 8.
Projet ► (Sélectionnez la cible de votre projet) ► Paramètres de construction ► (tapez 'Swift' dans la barre de recherche) Langue du compilateur Swift ► Version de la langue Swift ► Cliquez sur la liste Langue pour l'ouvrir.
Convertissez votre code source de Swift 2.0 en 3.2 en utilisant Xcode 8, puis continuez avec Xcode 9 (Swift 3.2 ou 4).
Pour faciliter la migration de votre code, procédez comme suit: (cela vous aidera à convertir la dernière version de Swift prise en charge par votre outil Xcode)
Xcode: Menus: Édition ▶ Masquer ▶ Vers la syntaxe Swift actuelle
Pour les projets Objective C créés avec Xcode 8 et s'ouvrant maintenant dans Xcode 9, l'erreur affichée est identique à celle mentionnée dans la question.
Pour résoudre ce problème, appuyez sur le bouton + dans les paramètres de construction et sélectionnez Ajouter un paramètre défini par l'utilisateur, comme indiqué dans l'image ci-dessous.
Ensuite, dans la nouvelle ligne créée, ajoutez Swift_VERSION
en tant que clé et 3.2
en tant que valeur, comme ci-dessous.
Cela corrigera l'erreur pour les projets Objective C.
Cela peut arriver lorsque vous avez ajouté des données de base à un projet existant.
Vérifier la:
<Nom>/<Nom> .xcdatamodeld/<Nom> .xcdatamodel/contents
fichier.
Ce fichier contient une entrée "sourceLanguage" qui (par défaut) aurait pu être définie sur "Swift". Changez-le en "Objective-C".
peut-être avez-vous besoin de télécharger toolchain. Cette erreur se produit lorsque vous ne disposez pas de la bonne version du compilateur Swift.
Je viens de cliquer sur le dernier bouton de conversion Swift et de définir le paramètre de construction de la cible de l'application-> Version linguistique Swift: Swift 4.0
J'espère que cela aidera.
J'ai passé plus d'une semaine à convertir l'ensemble du projet et suis venu à une solution ci-dessous:
Commencez par désintégrer la dépendance aux cocopods du projet, puis lancez la conversion du projet vers la dernière version de Swift.
Allez dans le répertoire du projet dans le terminal et tapez:
pod deintegrate
Cela désintègrera les cocopodes du projet et ne laissera aucune trace de CocoaPod dans le projet. Mais en même temps, il ne supprimera pas les fichiers xcworkspace et podfiles. Ce n'est pas grave s'ils sont présents.
Maintenant, vous devez ouvrir xcodeproj (pas xcworkspace) et vous obtiendrez de nombreuses erreurs car vous avez appelé les méthodes de dépendance cocoapods dans vos projets principaux.
Donc, pour supprimer ces erreurs, vous avez deux options:
Une fois que toutes les erreurs ont été supprimées, vous pouvez convertir le code dans la dernière version de Swift.
Parfois, si vous obtenez des erreurs étranges, essayez de nettoyer les données dérivées, puis essayez à nouveau.
Je viens tout juste de recevoir cela dans un projet Objective-C Xcode 10 (Nouveau) après avoir ajouté un fichier de modèle Core Data au projet.
J'ai trouvé deux façons de résoudre ce problème:
Ouvrez l'inspecteur de fichier du modèle (⌥⌘-1) et changez la langue de Swift à Objective-C
Méthode plus longue et plus dangereuse
Le modèle contient un fichier "contenu" avec cette ligne:
<model type="com.Apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="14460.32" systemVersion="17G5019" minimumToolsVersion="Automatic" sourceLanguage="Swift" userDefinedModelVersionIdentifier="">
Dans il y a une entrée sourceLanguage="Swift"
. Changez-le en sourceLanguage="Objective-C"
et l'erreur disparaîtra.
Pour trouver le fichier "contenu", faites un clic droit sur le .xcdatamodeld
dans Xcode et faites "Afficher dans le Finder". Faites un clic droit sur le fichier réel (Finder) et faites "Afficher le contenu du paquet"
De plus, le fait de changer la langue du modèle empêchera Xcode de générer des fichiers de sous-classe d'objets gérés dans Swift.