2017-05-22 6 views
2

Ich verwende AlamofireObjectMapper Ich brauche eine func zu machen, die einen generischen Parameter wie das nehmen:Versuche Allgemein Typen als Parameter in Swift passiert

func doSomething < T : BaseMappable > (myCustomClass : T) 
{ 
    Alamofire.request("url", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: APIKeys().AuthorizedHeader).responseObject(completionHandler: { (response :DataResponse<T>) in 

      let data = response.result.value 

      if let array = data?.objects 
      { 
       for ar in array 
       { 
        self.allPromotions.append(ar) 
       } 
      } 

     }) 


} 

aber iam immer Fehler:

Verwendung von undeclared Typ 'myCustomClass'bearbeiten wie Sie mir antworten in den Kommentaren fixed ich den Fehler aber Ich habe einen anderen Fehler, wenn iam versuchen, diese Methode

ich die Methode, wie die

doSomething(myCustomClass: Promotions) 

genannt zu nennen, aber ich habe einen anderen Fehler

Argument Typ ‚Promotions.Type‘ nicht konform zu erwarteten Typ 'BaseMappable'

und hier ist mein Abschlussball otions Klasse

import ObjectMapper 


class Promotions : Mappable { 





     var id:Int? 
     var workshop_id:Int? 
     var title:String? 
     var desc:String? 
     var start_date:String? 
     var expire_date:String? 
     var type:String? 

     var objects = [Promotions]() 




     required init?(map: Map){ 

     } 

     func mapping(map: Map) { 
      id <- map["id"] 
      workshop_id <- map["workshop_id"] 
      title <- map["title"] 
      desc <- map["desc"] 
      start_date <- map["start_date"] 
      expire_date <- map["expire_date"] 
      type <- map["type"] 
      objects <- map["promotions"] 
     } 




} 

Wie kann ich fix, dass

Antwort

0

myCustomClass ist nur der Name des Eingangsparameters zu doSomething. Der Name des generischen Typs lautet T, daher sollte DataResponse DataResponse<T> lauten.

+0

es den Fehler behoben, aber wenn ich nannte es wie das 'doSomething (myCustomClass: Promotions)' ich bekam ein anderer Fehler ** Argument Typ ‚Promotions.Type‘ entspricht nicht erwarteten Typ ‚BaseMappable ** – Muhammed

+0

Dieser Fehler ist ziemlich einfach, es sagt genau was falsch ist ... Sie müssen die Klasse 'Promotions' konform zum' Protocol BaseMappable' machen. –

+0

Promotions erbt von Mappable und Mappable erbt von BaseMappable – Muhammed

1

Übergeben Sie einfach die Promotions.self als Parameter.

Dies wird den Fehler beheben, den Sie beim Funktionsaufruf bekommen.

Verwandte Themen