Xcode può eseguire il refactoring solo del codice C e Objective-C. Come rinominare il nome della classe Swift in Xcode 6?


103

Ho creato un nuovo progetto di applicazione a visualizzazione singola nella versione beta di Xcode 6. Voglio rinominare la classe rapida da ViewController.swifta un altro nome. Ma quando seleziono Refactoring -> Rinomina, dà errore Xcode can only refactor C and Objective-C code.

inserisci qui la descrizione dell'immagine

Qualche idea su come rinominare la classe swift in Xcode 6?

AGGIORNARE:

Infine Xcode 9 supporta il refactoring per Swift. Apple ha impiegato 3 anni per aggiungere questa funzionalità di base. refactoring


9
Non ce n'è attualmente nessuno. Segnala un bug .
jtbandes

19
Oltre un anno dopo che è stato chiesto, l'unica risposta è ancora una ricerca e sostituzione manuale! Incredibilmente al contrario di Apple, questa è una caratteristica di base ed essenziale per un IDE
HughHughTeotl

1
AppCode può eseguire questo refactoring. Sarà un processo in due fasi per la tua classe definita in un .swiftfile. 1. Selezionare il nome della classe ed eseguire Refactor> Rinomina . 2. Selezionare il .swiftfile ed eseguire Refactoring> Rinomina .
Daniel Zhang

5
Anche dopo due anni !!! NON IMPLEMENTATO???
Milad Faridnia

In realtà è bello in un certo senso riporta alla memoria i vecchi tempi mentre copia e incolla 100 elementi in C
LegendLength

Risposte:


25

Puoi cambiare il nome di una classe in File Inspector sul lato destro di Xcode6.

  • apri la tua classe
  • vai a File Inspector> Identifica e digita la sezione
  • rinomina la classe esistente nel campo "nome".

È tutto! In precedenza ho rinominato manualmente il nome della classe nel file della classe.


11
Grazie per la risposta, ma cambia solo il nome della classe solo nella struttura del file. Devo ancora cambiare tutte le istanze del nome della mia classe ovunque nel codice. Considerando che usando Refactor-> Rename ... usato per cambiare il nome nella struttura del file così come nel codice.
Khawar

Nessun problema! Ho solo pensato che fosse una sorta di soluzione fino a quando Apple non farà qualcosa con questo problema. È possibile utilizzare anche la funzione Trova e sostituisci fino a quel giorno. In ogni caso, costruito in Refactor-> Rename fa quasi le stesse azioni.
Newone

1
@ Newone Non fa la stessa cosa. Ad esempio, Trova e sostituisci cercherà all'interno delle stringhe e Refactor-> Rename non dovrebbe farlo.
Martin Epsz

15

Sto usando Trova> Trova e sostituisci in Project , non è perfetto ma funziona.


12

Uso in questo modo:

  • È possibile posizionare il cursore sulla variabile che si desidera rinominare
  • Seleziona Editor - Modifica tutto in Scope (^ ⌘E)
  • Rinomina la variabile e automaticamente tutte le occorrenze delle variabili vengono modificate

Questo aiuta. Sono stupito che mi sia mancato per così tanto tempo !! :]
hdsenevi

1
Funziona solo nell'ambito, cioè non tra i file IIRC.
Steve Moser

10

Da questo tutorial.

Suddividi il tuo codice Swift iOS8

Per prima cosa, rinominiamo il nostro View Controller in modo che sia qualcosa di più significativo. Apri il tuo file ViewController.swift e sostituisci tutti i riferimenti a "ViewController" con il nostro nuovo nome, "SearchResultsViewController". Rinomina anche il file in SearchResultsViewController.swift.

Se provi a eseguire l'app da qui, otterrai un arresto anomalo. Questo perché il nostro file storyboard non è stato aggiornato per conoscere la nuova classe! Quindi apri Main.storyboard, seleziona il tuo oggetto "View Controller" nella scena (il menu di navigazione a sinistra), quindi seleziona Identity Inspector (a destra, terzo pulsante).

Da qui cambiamo la classe da "ViewController" a "SearchResultsViewController". Ora dovremmo tornare in pista. Verifica che il progetto funzioni ancora e procediamo.


grazie per la risposta. Ho già sperimentato questo metodo. Ma non sembra essere un buon modo. Se utilizzo oggetti ViewController.swift in 10 classi, devo rinominarli manualmente in tutte le classi. Così tanto doloroso e spreco di tempo :(
Khawar

@ Khawar- Sì, hai ragione, ma potrebbe essere che non ci sia un'altra opzione ora e anche Swift è in beta. non preoccuparti .. spero che Apple trovi un altro modo più facile allora (obiettivo c ???) :)
iPatel

1
Sono sulla versione 7.2 (7C68) e il refactoring della ridenominazione non è ancora possibile
Barbara R

In 7.3 non è nemmeno possibile.
ManiaChamp


2

Xcode 9

Xcode 9 ora supporta la ridenominazione in Swift. Questo è stato annunciato nel WWDC 2017.

inserisci qui la descrizione dell'immagine


Grazie, grazie Apple, ma la ridenominazione continua a non funzionare. Ora sta bloccando Xcode.
kisileno

Vero ... A partire dalla versione 9.0 beta, la ridenominazione causa il crash di Xcode. Ma questo è ciò che dovrebbe funzionare in futuro , ogni volta che può essere :)
Guy Daher
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.