覆盖协议通用方法

时间:2016-05-22 10:24:45

标签: ios swift

我有一个协议APIResponseHandler。哪个有函数handleResponse。它接受responseData和error并返回T.T的类型将取决于它的实现,它将在响应为JSON时返回Dictionary或在某些情况下返回NSData。任何想法我怎么能这样做

protocol APIResponseHandler {
    func handleResponse<T>(responseData: NSData?, error: NSError?) -> (T?, NSError?)
}

1 个答案:

答案 0 :(得分:0)

你可以给Swift一些T的暗示:

protocol APIResponseHandler {
    func handleResponse<T>(responseData: NSData?, error: NSError?) -> (T?, NSError?)
}

class MyClass: APIResponseHandler {
    func handleResponse<T>(responseData: NSData?, error: NSError?) -> (T?, NSError?) {
        print(T)
        return (nil, nil)
    }
}

let obj = MyClass()

// Telling Swift T is a [String: String] dictionary
let result: ([String: String]?, NSError?) = obj.handleResponse(nil, error: nil)
相关问题