web-dev-qa-db-fra.com

Xcode 9 Swift Language Version (Swift_VERSION)

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? 

81
Chaudhry Talha

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.

enter image description here


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.

enter image description here



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

enter image description here

147
Krunal

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. 

 build setting

Ensuite, dans la nouvelle ligne créée, ajoutez Swift_VERSION en tant que clé et 3.2 en tant que valeur, comme ci-dessous. 

 enter image description here

Cela corrigera l'erreur pour les projets Objective C.

46
R. Mohan

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".

1
digitaldaemon

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.

0
dalmate

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.

0
Atal Singh

Cette solution fonctionne quand rien d'autre ne fonctionne:

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:

  1. Commentez tout le code que vous avez utilisé dans la bibliothèque de cocoapodes.
  2. Créez une classe wrapper qui a des méthodes factices similaires à la bibliothèque cocopods, puis appelez-la.

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.

0
HSAM

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:

  1. Ouvrez l'inspecteur de fichier du modèle (⌥⌘-1) et changez la langue de Swift à Objective-C

  2. 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.

0
nevan king