Como você deve lidar com argumentos de fechamento para UIAlertAction

Eu tenho tentado criar umUIAlertAtion que também possui um manipulador. Eu li as respostas deesta questionar e saber como fazê-lo.

Minha pergunta é apenas sobre a parte do fechamento.

1) Eu sei que posso escrever:{alert in println("Foo")} Ou{_ in println("Foo")} mas eunão pode Escreva{println("Foo")}. Nos comentáriosaqui é explicado porquevocê precisa lidar com a ação do argumento.

Isso significa que, como o manipulador é do tipo(UIAlertAction) -> Void)? Devo sempre capturar o alertAction passado?

2) Eu também liesta e a resposta está basicamente dizendo que você pode passar uma função como argumento, mas a função deve ter algo do tipoUIAlertAction -> Void, que eu escrevi:

private func anything(action : UIAlertAction) {
    print("hello")
}

e depois escrevi minha ação de alerta como tal:

let anotherAction = UIAlertAction(title: "hi", style: UIAlertActionStyle.Default,
 handler: anything(action)) // error: Use of unresolved identifier 'action'

confuso por que eu recebo esse erro

3) Nos comentários, também dizia:Mas, além disso, você não precisa escrever UIAlertActionStyle.Default rapidamente. O padrão também funciona

Eu tentei escrever não usando o estilo, então ele teria como padrão.Default

let sendLogAction = UIAlertAction(title: "Log") { action in print("goodbye")}

Mas então eu recebo o seguinte erro:

'(title: String, (_) -> ())' (aka '(title: String, _ -> ())') não é convertível em '(title: String ?, style: UIAlertActionStyle, manipulador: (( UIAlertAction) -> Void)?) '(Aka' (título: Opcional, estilo: UIAlertActionStyle, manipulador: Opcional ()>) '), as tuplas têm um número diferente de elementos

4) Também lendoesta responda. Eu não entendo por que precisamos passaralert Isso não faz sentido. Não é como se não soubéssemos qual é o tipo de alerta ... já não definimos seu tipo? !! Alguém pode explicar onde a aprovação da ação em si seria útil em geral, quero dizer o que poderíamos fazer com ela?

Eu sei que isso é escrito como 4 perguntas, mas acho que é realmente apenas uma questão fundamental. Eu tenho extensivamenteler, usou manipuladores de fechamento / conclusão em um projeto em que estou trabalhando e brincando no playground, mas ainda estou confuso.

questionAnswers(3)

yourAnswerToTheQuestion