Xcode może refaktoryzować tylko kod C i Objective-C. Jak zmienić nazwę szybkiej klasy w Xcode 6?

103

Utworzyłem nowy projekt aplikacji Single View w wersji beta Xcode 6. Chcę zmienić nazwę klasy szybkiej z ViewController.swiftna inną. Ale kiedy wybieram Refactor -> Rename, pojawia się błąd Xcode can only refactor C and Objective-C code.

wprowadź opis obrazu tutaj

Masz pomysł, jak zmienić nazwę klasy Swift w Xcode 6?

AKTUALIZACJA:

Wreszcie Xcode 9 obsługuje refaktoryzację dla Swift. Dodanie tej podstawowej funkcji zajęło Apple 3 lata. Refaktoryzacja

Khawar
źródło
9
Obecnie nie ma żadnego. Zgłoś błąd .
jtbandes
19
Ponad rok po tym, jak zadano to pytanie, jedyną odpowiedzią jest nadal ręczne wyszukiwanie i zastępowanie! Niewiarygodnie wstecz od Apple, jest to podstawowa i niezbędna funkcja dla IDE
HughHughTeotl
1
AppCode może wykonać tę refaktoryzację. Będzie to proces dwuetapowy dla Twojej klasy zdefiniowanej w .swiftpliku. 1. Wybierz nazwę klasy i wykonaj Refaktoryzuj> Zmień nazwę . 2. Wybierz .swiftplik i wykonaj Refaktoryzację> Zmień nazwę .
Daniel Zhang
5
Nawet po dwóch latach !!! NIE ZAIMPLEMENTOWANO???
Milad Faridnia
W pewnym sensie jest miły, przywracający wspomnienia z dawnych czasów podczas kopiowania i wklejania 100 elementów w C
LegendLength Kwietnia

Odpowiedzi:

25

Możesz zmienić nazwę klasy w Inspektorze plików po prawej stronie Xcode6.

  • otwórz swoją klasę
  • przejdź do sekcji Inspektor plików> Zidentyfikuj i wpisz
  • zmień nazwę istniejącej klasy w polu „nazwa”.

To wszystko! Wcześniej ręcznie zmieniam nazwę klasy w pliku klasy.

Nowy
źródło
11
Dzięki za odpowiedź, ale zmienia tylko nazwę klasy tylko w strukturze plików. Nadal muszę zmieniać wszystkie wystąpienia mojej nazwy klasy w całym kodzie. Natomiast użycie Refactor-> Rename ... służyło do zmiany nazwy w strukturze pliku, a także w kodzie.
Khawar
Nie ma problemu! Po prostu myślałem, że to rodzaj rozwiązania, dopóki Apple nie zrobi czegoś z tym problemem. Do tego dnia możesz również korzystać z funkcji Znajdź i zamień. W każdym przypadku, wbudowany w Refactor-> Rename wykonuje prawie te same czynności.
Newone
1
@Newone To nie robi tego samego. Na przykład Find and Replace wyszuka wewnątrz ciągów, a Refactor-> Rename nie powinno tego robić.
Martin Epsz
15

Używałem funkcji Znajdź> Znajdź i zamień w programie Project , nie jest to idealne rozwiązanie, ale działa.

Pescolly
źródło
12

Używam w ten sposób:

  • Możesz ustawić kursor na zmiennej, której nazwę chcesz zmienić
  • Wybierz edytor - Edytuj wszystko w zakresie (^ ⌘E)
  • Zmień nazwę zmiennej i automatycznie wszystkie wystąpienia zmiennych zostaną edytowane
Alessandro Pirovano
źródło
To pomaga. Jestem zdumiony, że tęskniłem za tym tak długo !! :]
hdsenevi
1
Działa to tylko w zakresie, tj. Nie między plikami IIRC.
Steve Moser
10

Z tego samouczka.

Podziel swój kod Swift iOS8

Po pierwsze, zmieńmy nazwę naszego kontrolera widoku na coś bardziej znaczącego. Otwórz plik ViewController.swift i zamień wszystkie odwołania do „ViewController” na naszą nową nazwę „SearchResultsViewController”. Zmień również nazwę pliku na SearchResultsViewController.swift.

Jeśli spróbujesz uruchomić aplikację z tego miejsca, nastąpi awaria. Dzieje się tak, ponieważ nasz plik storyboardu nie został zaktualizowany, aby wiedzieć o nowej klasie! Więc otwórz Main.storyboard, wybierz obiekt 'View Controller' w scenie (lewa strona nawigacyjna), a następnie wybierz Identity Inspector (prawa strona, trzeci przycisk).

Stąd zmieńmy klasę z „ViewController” na „SearchResultsViewController”. Teraz powinniśmy wrócić na właściwe tory. Sprawdź, czy projekt nadal działa, i kontynuujmy.

iPatel
źródło
dzięki za odpowiedź. Już eksperymentowałem z tą metodą. Ale to nie wydaje się być dobry sposób. Jeśli używam obiektów ViewController.swift w 10 klasach, muszę ręcznie zmienić ich nazwy we wszystkich klasach. Tak bardzo bolesne i strata czasu :(
Khawar
@ Khawar- Tak, masz rację, ale może nie ma teraz innej opcji, a także Swift jest w fazie beta, więc. nie martw się o to ... mam nadzieję, że Apple znajdzie wtedy inną łatwiejszą drogę (cel c ???) :)
iPatel
1
Jestem na wersji 7.2 (7C68) i zmiana nazwy refaktoryzacji wciąż nie jest możliwa
Barbara R
W 7.3 też nie jest to możliwe.
ManiaChamp
2

Xcode 9

Xcode 9 obsługuje teraz zmianę nazwy w Swift. Zostało to ogłoszone w WWDC 2017.

wprowadź opis obrazu tutaj

Guy Daher
źródło
Dziękuję, dziękuję Apple, ale zmiana nazwy nadal nie działa. Teraz powoduje awarię Xcode.
kisileno
Prawda ... Od wersji beta 9.0 zmiana nazwy powoduje awarię Xcode. Ale to ma działać w przyszłości , kiedykolwiek tak się stanie :)
Guy Daher