Я пытаюсь создать 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'
confused, почему я получаю эту ошибку
3) В комментариях он также сказал: Но в дополнение к этому вам не нужно писать UIAlertActionStyle.Default в быстром..Default тоже работает.
Я пробовал писать, не используя стиль, поэтому он будет по умолчанию .Default
let sendLogAction = UIAlertAction(title: "Log") { action in print("goodbye")}
Но затем я получаю следующую ошибку:
'(title: String, (_) → ())' (aka '(title: String, _ → ())') не является convertible to '(название: String?, style: UIAlertActionStyle, обработчик: ((UIAlertAction) → Void)?) '(Aka' (название: необязательно, стиль: UIAlertActionStyle, обработчик: необязательный() > ) '), кортежи имеют различное количество элементов
4)
Также читайте этот ответ. Я не понимаю, зачем нам проходить в alert
, это не имеет смысла. Это не похоже на то, что мы не знаем, что такое тип предупреждения... разве мы уже не определили его тип?!! Может ли кто-нибудь объяснить, когда передача самого действия будет полезной вообще, я имею в виду, что мы можем с ней сделать?
Я знаю, что это написано как 4 вопроса, но я думаю, что это действительно просто основополагающий вопрос. Я широко читал, использовал обработчики закрытия/завершения в проекте, который я работаю и играю на детской площадке, но все же я в замешательстве.