@IBAction func addName(_ sender: AnyObject) {
let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert)
let saveAction = UIAlertAction(title: "Save", style: .default) {
[unowned self] action in
guard let textField = alert.textFields?.first,
let nameToSave = textField.text else {
return
}
self.names.append(nameToSave)
self.tableView.reloadData()
}
Я могу понять большинство частей кода, за исключением следующих строк:Пожалуйста, помогите мне понять эти строки кода
[unowned self] action in
guard let textField = alert.textFields?.first,
Я хотел бы написать код следующим образом:
@IBAction func addName(_ sender: AnyObject) {
let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert)
let saveAction = UIAlertAction(title: "Save", style: .default) {
let nameToSave = textField.text
self.names.append(nameToSave)
self.tableView.reloadData()
}
Что случилось с моим кодом?
В чем смысл использования [unowned self] action in
и следующего кода guard let
?
Какая доза alert.textFields?.first
означает?
Вы спрашиваете о двух совершенно отдельных строках кода, а не о одном. Эти два не имеют ничего общего друг с другом. – rmaddy
http://stackoverflow.com/questions/24320347/shall-we-always-use-unowned-self-inside-closure-in-swift ссылаются на этот ответ –