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

Ответы на вопрос(3)

Ваш ответ на вопрос