ios - 覆盖协议(protocol)泛型方法

标签 ios swift

我有一个协议(protocol) APIResponseHandler。其中有函数 handleResponse。它接受 responseData 和错误并返回 T。T 的类型将取决于它的实现,当响应为 JSON 时它将返回 Dictionary 或在某些情况下返回 NSData。知道我该怎么做

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

最佳答案

你可以给 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)

关于ios - 覆盖协议(protocol)泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37373110/

相关文章:

ios - 检测 iOS 中的通话事件?

ios - 使用 MPMoviePlayerController 播放 youtube 视频

ios - *** 错误 *** CGImageSource 创建时数据大小为 : 22467 - current size is only: 6139

ios - 更改 TextView 键盘外观时应用程序崩溃

ios - 有没有办法减少 FBSDKCoreKit 的大小?

ios - 文本输入垂直对齐

Swift:为什么在这种情况下没有带标签的参数?

swift - 无法在 macOS 上显示简单通知

swift - 重新初始化静态变量

ios - 完成的 Firebase 嵌套查询