Переименуйте или рефакторинг файлов в Xcode

Можно ли переименовать/рефакторить файл класса и переименовать фактический файл на диске? Если да, то как я могу это сделать?


person Sheehan Alam    schedule 17.06.2010    source источник


Ответы (7)


Самый безопасный способ переименовать файлы — изменить имя класса с помощью команды Xcode «Refactor». Использование этой команды гарантирует, что ваш код также будет обновлен везде, где есть ссылка на файл или класс (включая NIB).

Щелкните правой кнопкой мыши имя класса в файле интерфейса (.h), выберите Refactor->Rename, и Xcode проведет вас через процесс, позволяя предварительно просмотреть изменения перед их фиксацией.

Подробнее:

Щелкните правой кнопкой мыши имя класса (после @interface) и выберите Refactor->Rename. Например, щелкните правой кнопкой мыши ViewController в этом коде:

@interface ViewController : UIViewController

введите здесь описание изображения

Введите новое имя класса:

введите здесь описание изображения

Xcode позволит вам просмотреть изменения перед фиксацией.

введите здесь описание изображения

Вы также можете выделить имя класса и использовать меню Edit->Refactor Xcode или даже сопоставить его с сочетанием клавиш, если хотите.

Если вы действительно хотите переименовать файл, не затрагивая какой-либо код, щелкните имя на панели «Навигатор» (левая панель), подождите секунду, а затем щелкните еще раз. Имя будет выделено, и вы сможете ввести новое. Вы также можете удалить из Навигатора, переименовать файл в Finder и повторно добавить его в свой проект.

person nevan king    schedule 17.06.2010
comment
Этот подход лучше всего, так как он будет переименовывать экземпляры класса, хранящиеся в других файлах или файлах XIB. - person Kendall Helmstetter Gelner; 18.06.2010
comment
Кажется, это не работает, так как я обновился до 4.3. В файле заголовка (.h) XCode жалуется, что файл не добавлен в цель, чего не должно быть, поскольку это файл заголовка. Если попробовать в .m файле, то жалуется, что это не символ (класс, функция и т.д.) - person Michael; 29.02.2012
comment
@Michael Вы пробовали это в тестовом проекте? Я не устанавливал 4.3, но на 4.2 вроде нормально работает (только что попробовал). - person nevan king; 01.03.2012
comment
Кто-нибудь знает, где я могу найти соответствующий исходный код, если он с открытым исходным кодом? Я думаю, что они использовали clang tooling для реализации возможности рефакторинга, есть несколько хороших интерфейсов для такого функционала, но я не нашел исходный код. - person BergP; 24.05.2014
comment
К сожалению, это приводит к сбою моего Xcode. Я запускаю бета-версию Yosemite, так что это может быть причиной. С надеждой. - person CGTheLegend; 10.09.2014
comment
По крайней мере, с классами Xcode 7.2.1 и Objective-C вам просто нужно выполнить операцию рефакторинга, и вам не нужно переименовывать файл в навигаторе проекта. - person Pierre Mardon; 15.03.2016
comment
[iSarcasm] Мне нравится, как в Xcode 9 он работает почти так же, но вместо этого упускается шаг, чтобы дать мне диалоговое окно, где я могу его переименовать, давая мне захватывающую игру-головоломку, пытаясь понять, как использовать пользовательский интерфейс. переименовывать вещи.[/iSarcasm] - person Dronz; 02.01.2019
comment
Ничего не произошло, когда я выполняю Refactor->Rename, используя xcode 11.3.1, любая помощь? - person Satish Mavani; 04.03.2020
comment
щелкните имя на панели «Навигатор» (левая панель), подождите секунду, а затем щелкните еще раз, хоть бы убей, это не работает. Я трачу 10 минут, пытаясь переименовать дурацкий файл. - person ScottyBlades; 23.03.2021

Работает для Xcode 4.2.1: выберите файл в навигаторе проекта (левая панель по умолчанию) и нажмите [tab]

person Dave    schedule 22.12.2011
comment
Спасибо. Refactor-›Rename не работал с файлами C++. Это сработало. - person BlueVoid; 19.03.2013
comment
Я думаю, что этот ответ более заслуживает принятия, чем текущий. +1 - person Morgan Wilde; 01.05.2013
comment
Также работает с XCode 11. - person Kesha Antonov; 10.05.2020

По умолчанию Xcode переименовывает файл, когда вы переименовываете его либо в файловом навигаторе (представление левого контура), либо когда вы используете инспектор.

person bbum    schedule 17.06.2010
comment
Привет, я хотел бы переименовать протокол ( SideToolBarDelegate.h) с помощью ToolBarDelegate.h, но xcode говорит мне: SideToolBarDelegate.h импортируется или включается файлом Objective-C++, а не Objective-C или C:. Как я могу переименовать его, пожалуйста? Спасибо - person samir; 24.01.2013
comment
он просто заменяет его в одном файле ( SideToolBarDelegate.h ), но я хочу заменить это имя во всем проекте, например, в функции рефакторинга. - person samir; 24.01.2013
comment
shift-cmd-F, вытащите маленькие опции, чтобы найти и заменить. Найти и заменить... - person bbum; 24.01.2013
comment
Не забудьте переименовать вещи с родственными именами: Body, BodiesViewController, InteractingBodies — строгое «найти и заменить» не уловит 2-го или 3-го. - person willc2; 10.12.2013

В один конец: выберите файл, который хотите переименовать, и нажмите Tab. Я в основном использую это, однако Xcode иногда не может его переименовать. Так что я тогда

Другой способ: выберите файл. Откройте Область инспекторов (в правом верхнем углу). Затем откройте Инспектор файлов. Там вы найдете поле имени, где вы можете редактировать имя файла. (Смотрите скриншот).

введите здесь описание изображения

person Kareem Jeiroudi    schedule 20.09.2019

Xcode 11.6, попытка переименовать foo.cpp в bar.cpp не работает с использованием вышеуказанных методов. опция REFACTOR выделена серым цветом. Вместо этого сделайте следующее:

  • В браузере проектов найдите файл для переименования, например: foo.cpp
  • Щелкните правой кнопкой мыши (2 пальца) на файле foo.cpp.
  • Выбрать, показать в инспекторе файлов

В правой части экрана появится инспектор файлов.

  • В поле Имя введите новое имя файла, нажмите ENTER.
person user3696153    schedule 23.08.2020

Если вы переименовали файл вручную и использовали функцию «Найти и заменить» для переименования имени класса, убедитесь, что файл добавлен в «Источники компиляции» на этапах сборки вашей цели, так как он, вероятно, будет удален.

person jclv    schedule 05.09.2013

Выберите Refactor- > Rename nevan king ответ также отлично работает на бета-версии Xcode версии 7.0 (7A120f)

person Carlos Chang    schedule 17.06.2015
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его сообщением — вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно репутация, вы сможете комментировать любой пост. - person Mayank Jain; 17.06.2015
comment
Потому что у меня нет 50 репутации. Это то, что я публикую ответ на ответ. - person Carlos Chang; 18.06.2015