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


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.


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.


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

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.


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.