2016-06-04 16 views
0

dies ist mein Code erhalten: jede Anfrage Funktion des gleichen Code snippet'Alamofire.request verwendet ........‘Wie Sie den richtigen 'Typ' in schnellen

import Alamofire 
    import AlamofireObjectMapper 

    //so many functions like this to wrapper different json 'RecommadnBannerObject','RecommadnPostObject'... 

    func requestDataForBanner(completionHandler: (banner: Result<RecommadnBannerObject>) -> Void) { 
    Alamofire.request(NGAApi.Router.Bannerrecm).responseObject { (response:Response<RecommadnBannerObject, NSError>) in 
     guard let model = response.result.value else { 
      print("Error RecommadnBannerObject") 
      completionHandler(banner: Result.Failure(response.result.error!)) 
      return 
     } 
     completionHandler(banner: Result.Success(model)) 
    } 
} 

so definiert i a Funktion

static func sendRequestWithRouter<T>(router:URLRequestConvertible, classType: T.Type, completionHandler: (items: Result<T>) -> Void){ 

    Alamofire.request(router).responseObject { (response:Response<classType, NSError>->Void) in 
    //do something 
    } 

} 

aber die xcode sagt mir, dass 'classType ist kein Typ'.

the documents says

Die Metatyp einer Klasse, Struktur oder Aufzählungstyp ist der Name, der von .Type gefolgt Typ.

so was soll ich tun ..

+0

'Alamofire.request (Router) .responseObject {(Antwort: Antwort -> Void) in // etwas tun}' Dosis nicht entweder – user5617759

Antwort

0

ich nicht Alamo Feuer verwendet haben, aber können Sie nur T statt T.Type verwenden?

T.Type gibt nicht den Typ selbst, sondern eine Darstellung, auf die zur Laufzeit zugegriffen werden kann. Ich würde fragen, was der Zweck des Arguments classType ist? Bei jeder gegebenen Verwendung der Funktion wird T selbst zur Kompilierzeit verfügbar und verwendbar sein, so dass sie nicht weitergegeben werden muss.

+0

Wok habe ich versucht, dass aber die Xcode einen anderen Fehler erhöhen 'Wert kann nicht konvertieren vom Typ '(Response -> Void) ->()' zum erwarteten Argumenttyp 'Response <_, NSError> -> Void'' – user5617759