Zmień nazwę lub refaktoryzację plików w Xcode

81

Czy jest możliwa zmiana nazwy / refaktoryzacja pliku klasy i zmiana nazwy rzeczywistego pliku na dysku? Jeśli tak, jak mogę to zrobić?

Sheehan Alam
źródło

Odpowiedzi:

170

Najbezpieczniejszym sposobem zmiany nazw plików jest refaktoryzacja nazwy klasy za pomocą polecenia „Refactor” Xcode . Użycie tego polecenia zapewnia, że ​​kod jest również aktualizowany wszędzie tam, gdzie odwołuje się do pliku lub klasy (w tym do NIB).

Kliknij prawym przyciskiem myszy nazwę klasy w .hpliku interface ( ), wybierz Refactor->Rename, a Xcode poprowadzi Cię przez proces, umożliwiając podgląd zmian przed ich zatwierdzeniem.

Więcej szczegółów:

Kliknij prawym przyciskiem myszy nazwę klasy (po @interface) i wybierz Refactor-> Rename. Na przykład kliknij prawym przyciskiem myszy ViewControllerw tym kodzie:

@interface ViewController : UIViewController

wprowadź opis obrazu tutaj

Wpisz nową nazwę zajęć:

wprowadź opis obrazu tutaj

Xcode pozwoli ci przejrzeć zmiany przed zatwierdzeniem.

wprowadź opis obrazu tutaj

Możesz także zaznaczyć nazwę klasy i użyć Edit->Refactormenu Xcode , a nawet zamapować ją na skrót klawiaturowy, jeśli chcesz.

Jeśli faktycznie chcesz zmienić nazwę pliku bez wpływu na kod, kliknij nazwę w panelu Nawigator (lewy panel), odczekaj sekundę, a następnie kliknij ponownie. Nazwa zostanie podświetlona i możesz wpisać nową. Możesz także usunąć z Nawigatora, zmienić nazwę pliku w Finderze i ponownie dodać go do projektu.

Nevan King
źródło
1
Takie podejście jest najlepsze, ponieważ spowoduje zmianę nazw instancji klas przechowywanych w innych plikach lub plikach XIB.
Kendall Helmstetter Gelner
Wydaje się, że to nie działa, odkąd zaktualizowałem do 4.3. W pliku nagłówkowym (.h) XCode skarży się, że plik nie jest dodawany do celu - czego nie powinien, ponieważ jest to plik nagłówkowy. Jeśli spróbujesz w pliku .m, narzeka, że ​​nie jest to symbol (klasa, funkcja itp.)
Michael,
@Michael Czy próbowałeś tego w projekcie testowym? Nie zainstalowałem 4.3, ale wygląda na to, że działa dobrze na 4.2 (właśnie próbowałem).
nevan king
Czy ktoś wie, gdzie mogę znaleźć powiązany kod źródłowy, jeśli jest to open source? Myślę, że użyli narzędzi clang do implementacji funkcji refaktoryzacji, jest kilka dobrych interfejsów do takiej funkcjonalności, ale nie znalazłem kodu źródłowego.
BergP
Niestety powoduje to awarię mojego Xcode. Używam Yosemite Beta, więc może to być powód. Ufnie.
CGTheLegend
51

Works for Xcode 4.2.1: wybierz plik w nawigatorze projektu (domyślny lewy panel) i naciśnij [tab]

Dave
źródło
Dzięki. Refactor-> Rename nie działało z plikami C ++. To zadziałało.
BlueVoid
4
Myślę, że ta odpowiedź jest bardziej zasługująca na akceptację niż obecna. +1
Morgan Wilde
Działa również z XCode 11
Kesha Antonov
3

Domyślnie Xcode zmieni nazwę pliku, gdy zmienisz jego nazwę w nawigatorze plików (widok konspektu po lewej stronie) lub gdy użyjesz inspektora.

bbum
źródło
Cześć, chciałbym zmienić nazwę protokołu (SideToolBarDelegate.h) na ToolBarDelegate.h, ale xcode mówi do mnie: „SideToolBarDelegate.h jest importowany lub dołączany przez plik, który jest Objective-C ++, a nie Objective-C lub C:” . Jak mogę zmienić jego nazwę? Dzięki
samir
po prostu zamień go w jednym pliku (SideToolBarDelegate.h), ale chcę zastąpić tę nazwę w całym projekcie, podobnie jak funkcja refaktoryzacji.
samir
shift-cmd-F, wyświetl małe opcje, aby „znaleźć i zamienić”. Znajdź i zamień ...
bbum
Nie zapomnij zmienić nazw rzeczy na powiązane nazwy: Body, BodiesViewController, interactingBodies - Ścisłe „znajdź i zamień” nie złapie drugiego ani trzeciego.
willc2
2

W jedną stronę : wybierz plik, którego nazwę chcesz zmienić, a następnie naciśnij Tab. Przeważnie tego używam, jednak Xcode czasami nie zmienia nazwy. Więc czym bym wtedy był

Innym sposobem : wybierz plik. Otwórz obszar inspektorów (w prawym górnym rogu). A następnie otwórz Inspektora plików . Znajdziesz tam pole nazwy, w którym możesz edytować nazwę pliku. (Zobacz zrzut ekranu).

wprowadź opis obrazu tutaj

Kareem Jeiroudi
źródło
1

Xcode 11.6, próba zmiany nazwy „foo.cpp” na „bar.cpp” nie działa przy użyciu powyższych metod. opcja REFACTOR jest wyszarzona. Zamiast tego wykonaj następujące czynności:

  • W przeglądarce projektu znajdź plik, którego nazwę chcesz zmienić, np. Foo.cpp
  • Kliknij prawym (dwoma palcami) na foo.cpp
  • Wybierz „Pokaż w Inspektorze plików”

Po prawej stronie ekranu pojawi się inspektor plików.

  • W polu Nazwa wpisz nową nazwę pliku i naciśnij klawisz ENTER
user3696153
źródło
0

Jeśli ręcznie zmieniłeś nazwę pliku i użyłeś funkcji Znajdź i zamień, aby zmienić nazwę klasy, upewnij się, że plik został dodany do źródeł kompilacji w fazach kompilacji celu, ponieważ prawdopodobnie zostanie usunięty.

jclv
źródło
0

Wybierz Refactor-> Rename nevan king Odpowiedź działa również dobrze na Xcode w wersji 7.0 beta (7A120f)

Carlos Chang
źródło
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy zdobędziesz wystarczającą reputację , będziesz mógł skomentować każdy post .
Mayank Jain
Ponieważ nie mam 50 punktów reputacji. Oto, co zamieszczam odpowiedź na odpowiedź.
Carlos Chang