我试图调用此功能,其中 DataObject 是用户使用的协议:
static func makePostRequest<T:DataObject>(to endpoint:String, dataObject: T, objectType: T.Type, completionHandler: @escaping (DataObject?, Error?) -> Void) {
//some code
}
但是我无法使用以下参数调用它:
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)
}
我看到一个错误,说我无法通过这个参数列表调用它,但所有参数都是正确的......我真的不知道发生了什么。
错误:
无法调用&#39; makePostRequest&#39;使用类型&#39;的参数列表(to:String,dataObject:T,objectType:User.Type,completionHandler:(DataObject?,Error?) - &gt; Void)&#39;
答案 0 :(得分:2)
我想你需要这样称呼它,至少它在操场上对我有用。
makePostRequest(to: endpoint, dataObject: object, objectType: T.self, completionHandler: completionHandler)
或添加其他通用变量
func makePostRequest<T: DataObject, U>(to endpoint:String, dataObject: T, objectType: U.Type, completionHandler: @escaping (DataObject?, Error?) -> Void)
我不知道你想要实现什么,所以这对你来说可能没有任何帮助