2016-05-26 2 views
0

J'essaie de passer un completionHandler comme paramètre dans une fonction (pas de problème ici). Mon problème est que j'ai plusieurs types précis possibles que je peux recevoir dans ma fonction completionHandler.Swift - CompletionHandler modélisé comme paramètre dans la fonction (UsingObjectMapper)

Alors j'ai pensé: "Utilisons des modèles", et j'ai essayé.

C'est le système que je veux utiliser: FoncA -> FoncB (..) {completionHandler (Mappable?)} -> FoncC (completionHandler comme MyType?) (Expéditeur: T) {performSegueWithIdentifier (» Segue », expéditeur)}

problème: Func A me imprime une erreur Func B semble être ok Func C semble être ok

savez-vous gars comment faire ça, je suis pas encore utilisé pour les templates ?? Merci pour toute aide :)

Répondre

1

Je ne crois pas que vous pouvez lancer completionHandler comme ça dans une signature de méthode. Vous allez devoir faire votre typecasting à l'intérieur du corps de la méthode. par exemple.

typealias handler =() -> Array<AnyObject> 

    funcA(handler) 

    func funcA<T>(completion: T?) -> funcB { 

    if let completion = completion as? handler { 
     let array = completion() 
     //do whatever you want here 
    } 
    }