无法将类型“结果<T>”的值转换为预期的参数类型“结果<_>”

时间:2019-07-13 19:36:50

标签: swift alamofire codable

我是Swift的新手,尝试使用此{{3}},但是在swift 4.2上遇到了完成错误(response.result)

>>> truncatechars_middle(word, 4)
'12...89'
>>> truncatechars_middle(word, 5)
'12...789'
>>> truncatechars_middle(word, 6)
'123...789'
>>> truncatechars_middle(word, 7)
'123...6789'
>>> truncatechars_middle(word, 8)
'1234...6789'
>>> truncatechars_middle(word, 9)
'123456789'

3 个答案:

答案 0 :(得分:1)

或者您可以使用AF5中可用的类型别名。例如:

@discardableResult
private static func performRequest<T: Decodable>(route: ApiRouterAuth, decoder: JSONDecoder = JSONDecoder(), completion: @escaping (AFResult<T>) -> Void) -> DataRequest {
    return AF.request(route)
        .responseDecodable(decoder: decoder) { (response: AFDataResponse<T>) in
            completion(response.result)
    }
}

答案 1 :(得分:0)

Alamofire 5不支持Swift 4.2,仅支持Swift 5及更高版本。降级到Alamofire v4,或更新完成处理程序以使用Result<T, Error>

答案 2 :(得分:0)

只需将AF放在Result和DataRequest前面,对我有用。