Переименование розетки в Свифте

Я случайно ошибочно набрал один из выходов в своем контроллере и столкнулся с несколькими проблемами. Когда я вручную попытаюсь исправить опечатку, я получаю остановку во время выполнения внутри AppDelegate Мне показано сообщение Thread 1: signal SIGABRT, в котором выделяется начало кода:

class AppDelegate: UIResponder, UIApplicationDelegate {
  ...
}

Я нашел, что для исправления этой проблемы в Objective-C вы должны щелкнуть правой кнопкой мыши исходное имя выхода и Refactor => Rename, но, к сожалению, я получаю сообщение: "Xcode может только реорганизовать C и Objective-C код".

Контроллер просмотра

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var billTextField: UITextField!

    @IBOutlet weak var tipRateSegmentedControl: UISegmentedControl!

    @IBOutlet weak var tiLabel: UILabel! // Variable name should be "tipLabel"

    @IBAction func calculateTapped(sender: AnyObject) {
        var userInput = billTextField.text as NSString
        var totalBill: Float = userInput.floatValue
        var index: Int = tipRateSegmentedControl.selectedSegmentIndex
        var tipRate: Float = 0.15

        if index == 0 {
            tipRate == 0.15
        } else if index == 1 {
            tipRate = 0.20
        } else {
            tipRate = 0.25
        }

        var tip: Float = totalBill * tipRate

        tipLabel.text = "$\(tip)"
    }
}

Ответ 1

РЕДАКТИРОВАТЬ: Поскольку Xcode9, есть функция рефакторинга; новый хороший метод - это в этом ответе


Так как Xcode 6, вы можете искать имена своих магазинов непосредственно в навигаторе поиска (Cmd+3), он показывает вхождения в вашем коде и в ваших xibs и раскадровках. Он также работает с действиями.

Просто найдите имя в навигаторе поиска.

enter image description here

Вы можете видеть, что второй результат - это ссылка в раскадровке. Вы можете заменить один за другим, щелкнув по каждому результату и нажмите "Заменить", или вы можете напрямую заменить все, если вы уверены, что ничего не сломаете.

Ответ 2

Xcode 9

Xcode 9 имеет множество улучшений редактора, включая функцию, которая изменяет имя выхода/действия в коде и раскадровке с одного места.

В приведенном ниже примере кода Swift щелкните правой кнопкой мыши по btnRequestCode, из всплывающего меню выберите "Рефакторинг > Переименовать..." , измените имя выхода/действия и Xcode измените его на Раскадровка также.

@IBOutlet weak var btnRequestCode: UIButton!

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

Ответ 3

С быстрым подобным рефактором пока не работает. Вы должны изменить имя розетки, а затем удалить и reset соединение в построителе интерфейса.

Обновлено: enter image description here

Щелкните правой кнопкой мыши IBOutlet, который вы хотите переименовать, удалите ссылочную розетку и переназначьте его, но вам не нужно ничего делать с вашим кодом.