Uso le chiusure opzionali, ma non riesco a trovare il modo di trasmettere un parametro. Cercati ovunque, ho provato tutti i suggerimenti, ma non riesco a farlo funzionare.parametri con chiusure opzionali in swift
Il mio codice:
func DoAlert(title: String
, message: String
, actions: String
, sender: AnyObject?
, Ctlr : UIViewController
, SegueString: String?
, YesClosure:()->() = {}
, NoClosure:()->() = {}
, StartClosure:()->() = {}
, EndClosure:()->() = {}
) {
if (actions.rangeOfString("Ok") != nil {
alert.addAction(UIAlertAction(title: "OK", style: .Default) { action -> Void in
EndClosure()
})}
} // end function
voglio aggiungere una chiusura per Ok, in cui è necessario il parametro 'sé'.
Qualcosa come di seguito:
// add to func doAlert:
, OkClosure: (AnyObject)->() = {}
// add to action Ok (before the EndClosure:
OkClosure(sender!)
Ottenere errore sulla prima linea: ANYOBJECT non è sottotipo di()
Se lascio ANYOBJECT dalla prima linea, errore di ottenere: Impossibile convertire l'espressione di digitare 'AnyObject' per digitare '() =>()'
Tutte le altre prove mi danno errori simili "Tuple". Come codifico il passaggio dei parametri nelle chiusure opzionali nel mio codice?
Un po 'più bello: 'SìClosure: (() ->())? = nil' e quindi usarlo in questo modo: 'YesClosure?()' (funziona solo se è impostato). Utilizza anche lowerCaseCamelCasing per parametri, variabili e istanze. – vrwim
'DoAlert' * potrebbe * avere troppi argomenti. Non c'è modo di scrivere codice pulito quando si dispone di un metodo che richiede 10 argomenti, aggravato dal fatto che quattro di essi sono chiusi. – nhgrif
nhgrif. Posso vedere il tuo punto di vista. DoAlert però è lì per creare codice pulito ovunque voglio simulare la "message box" VB. – ReneMusters