gpt4 book ai didi

ios - 快速组合 : How to specify the Error type of tryMap(_:)?

转载 作者:行者123 更新时间:2023-12-01 15:20:09 26 4
gpt4 key购买 nike

在 Combine 框架中,我们可以抛出一个通用的 Error使用时的协议(protocol)类型tryMap .

但是,我们如何才能更具体地了解 Error类型?

例如,

let publisher = urlSession.dataTaskPublisher(for: request).tryMap { (data, response) -> (Data, HTTPURLResponse) in
guard let response = response as? HTTPURLResponse else {
throw URLError(.cannotParseResponse)
}
return (data, response)
}

如何指定 Error这个类型 publisher ?我想使用 URLError而不是 Error .

我找到了方法 setFailureType(to:)Combine框架。但是, tryMap(_:) 无法使用它。 .

最佳答案

setFailureType(to:)只是强制失败类型为 Never 的发布者的失败类型. tryMap总是使用 Error作为错误类型,因为任何 Error可以扔在闭包体内,所以你需要使用 mapError强制URLError类型:

let map_error = publisher.mapError({ error -> URLError in
switch (error) {
case let url_error as URLError:
return url_error
default:
return URLError(.unknown)
}
})

关于ios - 快速组合 : How to specify the Error type of tryMap(_:)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59018880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com