Переименование розетки в Свифте
Я случайно ошибочно набрал один из выходов в своем контроллере и столкнулся с несколькими проблемами. Когда я вручную попытаюсь исправить опечатку, я получаю остановку во время выполнения внутри 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, который вы хотите переименовать, удалите ссылочную розетку и переназначьте его, но вам не нужно ничего делать с вашим кодом.