Xcode ne peut refactoriser que le code C et Objective-C. Comment renommer le nom de la classe Swift dans Xcode 6?

103

J'ai créé un nouveau projet d'application Single View dans la version bêta de Xcode 6. Je veux renommer la classe rapide de ViewController.swiften un autre nom. Mais lorsque je sélectionne Refactor -> Renommer, cela donne une erreur Xcode can only refactor C and Objective-C code.

entrez la description de l'image ici

Une idée comment renommer la classe Swift dans Xcode 6?

METTRE À JOUR:

Enfin, Xcode 9 prend en charge le Refactoring pour Swift. Il a fallu 3 ans à Apple pour ajouter cette fonctionnalité de base. Refactoring

Khawar
la source
9
Il n'y en a pas actuellement. Déposer un bogue .
jtbandes
19
Plus d'un an après cette demande, la seule réponse est toujours une recherche manuelle et un remplacement! Incroyablement à l'envers d'Apple, c'est une fonctionnalité de base et essentielle pour un IDE
HughHughTeotl
1
AppCode peut accomplir cette refactorisation. Ce sera un processus en deux étapes pour votre classe définie dans un .swiftfichier. 1. Sélectionnez le nom de la classe et exécutez Refactor> Renommer . 2. Sélectionnez le .swiftfichier et exécutez Refactor> Renommer .
Daniel Zhang
5
Même après deux ans !!! PAS MIS EN ŒUVRE???
Milad Faridnia
C'est en fait agréable d'une certaine manière de rappeler des souvenirs d'antan en
copiant

Réponses:

25

Vous pouvez changer le nom d'une classe dans l'inspecteur de fichiers sur le côté droit de Xcode6.

  • ouvrez votre classe
  • allez dans l'inspecteur de fichiers> section Identifier et saisir
  • renommer la classe existante dans le champ "nom".

C'est tout! Auparavant, je renomme manuellement le nom de la classe dans le fichier de classe.

Nouveau
la source
11
Merci pour la réponse, mais cela ne change que le nom de la classe uniquement dans la structure du fichier. Je dois encore changer toutes les instances de mon nom de classe partout dans le code. Alors que l'utilisation de Refactor-> Rename ... utilisé pour changer le nom dans la structure du fichier ainsi que dans le code.
Khawar
Aucun problème! Je pensais juste que c'était une sorte de solution jusqu'à ce qu'Apple fasse quelque chose avec ce problème. Vous pouvez également utiliser la fonction Rechercher et remplacer jusqu'à ce jour. Dans tous les cas, construit dans Refactor-> Rename effectue presque les mêmes actions.
Nouveau le
1
@Newone Cela ne fait pas la même chose. Par exemple, Find and Replace recherchera à l'intérieur des chaînes, et Refactor-> Rename ne devrait pas le faire.
Martin Epsz
15

J'ai utilisé Rechercher> Rechercher et remplacer dans Project , ce n'est pas parfait mais cela fonctionne.

Pescolly
la source
12

J'utilise de cette façon:

  • Vous pouvez positionner le curseur sur la variable que vous souhaitez renommer
  • Sélectionner l'éditeur - Tout modifier dans l'étendue (^ ⌘E)
  • Renommez la variable et automatiquement toutes les occurrences de variable sont éditées
Alessandro Pirovano
la source
CA aide. Je suis étonné d'avoir manqué ça depuis si longtemps !! :]
hdsenevi
1
Cela ne fonctionne que dans le cadre, c'est-à-dire pas entre les fichiers IIRC.
Steve Moser
10

De ce tutoriel.

Divisez votre code Swift iOS8

Tout d'abord, renommons notre contrôleur d'affichage pour qu'il soit quelque chose de plus significatif. Ouvrez votre fichier ViewController.swift et remplacez toutes les références à «ViewController» par notre nouveau nom, «SearchResultsViewController». Renommez également le fichier en SearchResultsViewController.swift.

Si vous essayez d'exécuter l'application à partir d'ici, vous obtiendrez un plantage. C'est parce que notre fichier de storyboard n'a pas été mis à jour pour connaître la nouvelle classe! Alors ouvrez le Main.storyboard, sélectionnez votre objet `` View Controller '' dans la scène (le menu de navigation de gauche), puis sélectionnez l'Inspecteur d'identité (côté droit, troisième bouton).

À partir de là, changeons la classe de «ViewController» à «SearchResultsViewController». Maintenant, nous devrions être de retour sur la bonne voie. Vérifiez que le projet fonctionne toujours et continuons.

iPatel
la source
Merci pour votre réponse. J'ai déjà expérimenté cette méthode. Mais cela ne semble pas être le bon moyen. Si j'utilise des objets ViewController.swift dans 10 classes, je dois les renommer manuellement dans toutes les classes. Tellement douloureux et perte de temps :(
Khawar
@ Khawar- Oui, vous avez raison, mais il se peut qu'il n'y ait pas d'autre option maintenant et Swift est également en version bêta. ne vous en faites pas .. j'espère qu'Apple trouvera un autre moyen plus facile alors (objectif c ???) :)
iPatel
1
Je suis sur la version 7.2 (7C68) et le refactoring de changement de nom n'est toujours pas possible
Barbara R
En 7.3, ce n'est pas non plus possible.
ManiaChamp
2

Xcode 9

Xcode 9 prend désormais en charge le changement de nom dans Swift. Cela a été annoncé lors de la WWDC 2017.

entrez la description de l'image ici

Guy Daher
la source
Merci, merci Apple, mais le changement de nom ne fonctionne toujours pas. Maintenant, il plante le Xcode.
kisileno
Vrai ... Depuis la version bêta de la version 9.0, le changement de nom fait planter Xcode. Mais c'est ce qui est censé fonctionner à l' avenir , chaque fois que cela peut être :)
Guy Daher