即使所有参数都正确,也无法调用函数

时间:2017-11-09 20:56:46

标签: swift

我试图调用此功能,其中 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;

1 个答案:

答案 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)

我不知道你想要实现什么,所以这对你来说可能没有任何帮助