【问题标题】:Make generic definition optional in Swift 4在 Swift 4 中使泛型定义可选
【发布时间】:2017-12-07 17:25:03
【问题描述】:

我的类定义看起来像

class Response<T : Decodable> {
    var responseData : T?
}

class Test {
    func someFunction() {
        let serverResponse = Response<Employee>();
        let errorResponse = Response(); //Compilation error here
    }
}

如何通过 Decodable 类或 nil 表示来初始化 Response 类?

【问题讨论】:

  • 泛型类型必须在声明变量时指定占位符类型是什么(或提供足够的信息来推断它)。一种解决方案是将其包装为枚举(如 Alamofire 的 Result 类型)。但这仍然需要您知道响应类型将是什么,例如我正在请求一名员工,但出现了错误。或者你真的不知道错误发生时你期望的类型是什么?

标签: ios swift generics swift4


【解决方案1】:

响应通常是这样写的:

enum Response<T : Decodable> {
    case success(T)
    case failure(Error)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多