Xcode может выполнять рефакторинг только кода C и Objective-C. Как переименовать быстрое имя класса в Xcode 6?


103

Я создал новый проект приложения Single View в бета-версии Xcode 6. Я хочу переименовать быстрый класс из ViewController.swiftв другое имя. Но когда я выбираю Refactor -> Rename, появляется ошибка Xcode can only refactor C and Objective-C code.

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

Есть идеи, как переименовать быстрый класс в Xcode 6?

ОБНОВИТЬ:

Наконец, Xcode 9 поддерживает рефакторинг для Swift. Apple потребовалось 3 года, чтобы добавить эту базовую функцию. Рефакторинг


9
В настоящее время нет. Сообщите об ошибке .
jtbandes

19
Спустя год после того, как этот вопрос был задан, единственным ответом по-прежнему остается поиск и замена вручную! Невероятно отсталый от Apple, это основная и важная функция для IDE
HughHughTeotl

1
AppCode может выполнить этот рефакторинг. Это будет двухэтапный процесс для вашего класса, определенного в .swiftфайле. 1. Выберите имя класса и выполните Refactor> Rename . 2. Выберите .swiftфайл и выполните Refactor> Rename .
Даниэль Чжан,

5
Даже через два года !!! НЕ РЕАЛИЗОВАНА???
Милад Фаридния

Это действительно приятно в некотором смысле возвращает воспоминания о былых временах при копировании и вставке 100 элементов в C
LegendLength

Ответы:


25

Вы можете изменить имя класса в File Inspector в правой части Xcode6.

  • открой свой класс
  • перейдите в Инспектор файлов> Определить и ввести раздел
  • переименовать существующий класс в поле «имя».

Вот и все! Раньше я вручную переименовывал имя класса в файле класса.


11
Спасибо за ответ, но он меняет только имя класса только в файловой структуре. Мне все еще нужно изменить все экземпляры имени моего класса везде в коде. В то время как использование Refactor-> Rename ... используется для изменения имени в файловой структуре, а также в коде.
Khawar

Нет проблем! Я просто подумал, что это своего рода решение, пока Apple не решит эту проблему. Вы также можете использовать функцию «Найти и заменить» до этого дня. В любом случае, встроенный Refactor-> Rename выполняет почти те же действия.
Newone

1
@Newone Это не то же самое. Например, Find и Replace будут искать внутри строк, а Refactor-> Rename этого делать не должен.
Мартин Эпс

15

Я использовал « Найти»> «Найти и заменить» в Project , это не идеально, но работает.


12

Я использую такой способ:

  • Вы можете поместить курсор на переменную, которую хотите переименовать.
  • Выбрать редактор - редактировать все в области (^ ⌘E)
  • Переименуйте переменную, и автоматически все вхождения переменной будут редактироваться

Это помогает. Я удивлен, что так долго скучал по этому поводу !! :]
hdsenevi

1
Это работает только в рамках области, то есть не для файлов IIRC.
Steve Moser

10

Из этого учебника.

Разделите свой код iOS8 Swift

Перво-наперво, давайте переименуем наш View Controller, чтобы он стал более значимым. Откройте файл ViewController.swift и замените все ссылки на ViewController нашим новым именем SearchResultsViewController. Переименуйте файл в SearchResultsViewController.swift.

Если вы попытаетесь запустить приложение отсюда, вы получите сбой. Это связано с тем, что наш файл раскадровки не был обновлен, чтобы узнать о новом классе! Итак, откройте Main.storyboard, выберите в сцене объект «View Controller» (левая панель навигации), а затем выберите Identity Inspector (правая сторона, третья кнопка).

Отсюда давайте изменим класс с ViewController на SearchResultsViewController. Теперь мы должны вернуться на правильный путь. Убедитесь, что проект все еще работает, и приступим.


Спасибо за ответ. Я уже опробовал этот метод. Но, похоже, это не лучший способ. Если я использую объекты ViewController.swift в 10 классах, мне придется вручную переименовать их во всех классах. Столько болезненных и бесполезных трат на время :(
Khawar

@ Khawar: Да, вы правы, но, возможно, сейчас нет другого варианта, а также Swift находится в стадии бета-тестирования. не беспокойтесь об этом .. надеюсь, что тогда Apple найдет другой более простой способ (цель c ???) :)
iPatel

1
Я использую версию 7.2 (7C68), и рефакторинг переименования все еще невозможен
Барбара Р.

В 7.3 это тоже невозможно.
ManiaChamp


2

Xcode 9

Xcode 9 теперь поддерживает переименование в Swift. Об этом было объявлено на WWDC 2017.

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


Спасибо, спасибо, Apple, но переименование по-прежнему не работает. Теперь происходит сбой Xcode.
кисилено

Верно ... Начиная с бета версии 9.0, переименование вызывает сбой Xcode. Но это то, что должно сработать в будущем , когда бы это ни было :)
Гай Дахер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.