Как вы должны обрабатывать аргументы закрытия для UIAlertAction
Я пытался создатьUIAlertAtion
который также имеет обработчик. Я читаю ответы отэтот вопрос и знать, как это сделать.
Мой вопрос только о закрывающей части.
1) Я знаю, что могу написать:{alert in println("Foo")}
Или же{_ in println("Foo")}
но яне может записывать{println("Foo")}
, В комментарияхВот это объясняется тем, чтовам нужно обработать аргумент действий.
Значит ли это, что обработчик имеет тип(UIAlertAction) -> Void)?
Я должен всегда захватывать переданный alertAction?
2) Я тоже читаюэтот и ответ в основном говорит, что вы можете передать функцию в качестве аргумента, но функция должна принимать что-то типаUIAlertAction -> Void
, который я написал:
private func anything(action : UIAlertAction) {
print("hello")
}
а затем написал мое предупреждение как таковое:
let anotherAction = UIAlertAction(title: "hi", style: UIAlertActionStyle.Default,
handler: anything(action)) // error: Use of unresolved identifier 'action'
запутался, почему я получаю эту ошибку
3) В комментариях также сказано:Но в дополнение к этому вам не нужно писать UIAlertActionStyle.Default по-быстрому. По умолчанию тоже работает
Я пытался писать без использования стиля, поэтому по умолчанию.Default
let sendLogAction = UIAlertAction(title: "Log") { action in print("goodbye")}
Но тогда я получаю следующую ошибку:
'(title: String, (_) -> ())' (aka '(title: String, _ -> ())') нельзя преобразовать в '(title: String ?, style: UIAlertActionStyle, handler: (( UIAlertAction) -> Void)?) '(Aka' (title: Optional, style: UIAlertActionStyle, handler: Optional ()>) '), кортежи имеют различное количество элементов
4) Также читаюэтот ответ. Я не понимаю, почему мы должны пройти вalert
это не имеет никакого смысла. Мы не знаем, что это за тип оповещения ... разве мы не определили его тип? !! Кто-нибудь может объяснить, где прохождение самого действия было бы полезно в целом, я имею в виду, что мы могли бы сделать с ним?
Я знаю, что это написано как 4 вопроса, но я думаю, что это действительно просто основополагающий вопрос. У меня экстенсивночитать, использовал обработчики замыканий / завершений в проекте, в котором я работаю и играю на детской площадке, но все же я в замешательстве.