我正在写一个网络层,并且我写了一个enum来封装请求的结果:
enum RequestResult<T> {
case success(T)
case error(RequestError)
}
对于每个请求,我只能成功或失败。然后,我可以这样使用:
class PostsRequest {
...
static func fetch(completion: @escaping (RequestResult<[Post]>) -> Void) {
但是,我如何在没有成功结果的请求中使用我的通用RequestResult
,或者在成功时获得很多结果?我可以在一个案例中写一个带有可变数量的通用枚举吗?
答案 0 :(得分:0)
对于没有结果的请求,您只需使用Void类型:
let request: RequestResult<Void> = .success()
对于有多个结果的请求,我不太了解您的问题,因为在您提供的示例中,您已经将多个结果建模为数组:
RequestResult<[Post]>
如果您想要的是多个结果,每个具有不同的类型,您应该将它们放在struct / class中,并将该类型作为通用传递给ResquestResult枚举。