我的问题很简单?你怎么能在enum中使用泛型?
我有一个协议:
protocol Request {
associatedType BackendModel = Codable
}
class FirstModel: Codable { }
class FirstRequest: Request {
typealias BackendModel = Codable
}
现在我想为请求调用创建一个成功/失败的枚举。成功应该返回我的BackendModel。我认为这样的事情,但它不起作用。
enum Response<T: Codable> {
case success(T)
case failure(Error)
}
然后我会在功能完成中使用它
// This function is used in an extension of the Request protocol.
func doCallWithCompletion(completion: ((Response<T: BackendModel>) -> Void)?) {
let model = FirstModel()
completion(.success(model))
}
谢谢!
答案 0 :(得分:0)
您需要将具体类型作为泛型参数,同时使用枚举声明闭包:
extension Request {
func doCallWith(completion:(Response<FirstModel>) -> ()) {
let model = FirstModel()
completion(.success(model))
}
}