2017-11-09 4 views
1

Ich versuche, diese Funktion aufzurufen, wo Datenobjekt ein Protokoll ist, dass Benutzer verwendet:nicht funktionieren kann auch aufrufen, wenn alle Parameter korrekt sind

static func makePostRequest<T:DataObject>(to endpoint:String, dataObject: T, objectType: T.Type, completionHandler: @escaping (DataObject?, Error?) -> Void) { 
//some code 
} 

Aber ich kann es nicht berufen, mit diesem Parameter:

static func create<T : DataObject>(_ object: T, completionHandler: @escaping (DataObject?, Error?) -> Void) { 
     let endpoint = NetworkManager.shared.baseURL + UserDAO.methodPath 
     NetworkManager.makePostRequest(to: endpoint, dataObject: object, objectType: User.self, completionHandler: completionHandler) 
    } 

ein Fehler erscheint mir sagen, dass ich es nicht mit dieser Liste von Parametern aufrufen können, aber alle von ihnen sind richtig ... ich weiß nicht wirklich, was passiert.

Fehler:

Cannot invoke 'makePostRequest' with an argument list of type '(to: String, dataObject: T, objectType: User.Type, completionHandler: (DataObject?, Error?) -> Void)'

Antwort

2

Ich denke, man es so nennen müssen, zumindest ist es für mich in Spielplatz gearbeitet.

makePostRequest(to: endpoint, dataObject: object, objectType: T.self, completionHandler: completionHandler) 

oder fügen Sie andere generische Variable

func makePostRequest<T: DataObject, U>(to endpoint:String, dataObject: T, objectType: U.Type, completionHandler: @escaping (DataObject?, Error?) -> Void) 

Ich weiß nicht, was Sie erreichen wollen, so könnte dies nicht bei allen

+0

Hinzufügen eines weiteren generische Variable gearbeitet helfen! Vielen Dank! –

Verwandte Themen