2016-05-22 27 views
0

我有一個協議APIResponseHandler。其中有handleResponse函數。其中需要responseData和錯誤並返回T. T的類型將取決於它的實現它將返回字典當響應是JSON或在某些情況下返回NSData。任何想法,我怎麼能做到這一點改寫協議通用方法

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

也許你想要一個'associatedtype'? – jtbandes

回答

0

你可以給斯威夫特什麼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)