ios - 迁移 RxSwift 以结合
问题描述
我正在从 RxSwift 迁移到 Combine 并遇到了与错误处理相关的问题:
func myMethod(firstName: String?) -> Observable<Data> {
guard let firstName = firstName else {
return Observable.error(MyErrorEnum.error)
}
return someAPICall...
}
我正在迁移到组合如下:
func myMethod(firstName: String?) -> AnyPublisher<Data, Error> {
guard let firstName = firstName else {
// can't quite figure out how to return an error here...
}
return someAPICall...
}
我通常不会努力处理错误,特别是在处理网络呼叫时,但出于某种原因,这个错误正在避开我。
非常感谢任何输入!
解决方案
您可以使用Fail
发布者:
func myMethod(firstName: String?) -> AnyPublisher<Data, Error> {
guard let firstName = firstName else {
return Fail<Data, Error>(error: MyErrorEnum.error).eraseToAnyPublisher()
}
return someAPICall...
}
但我认为您的设计是最佳设计,您最好只需要一个非可选firstName
的,并让调用者意识到您的方法不适用于 nil 值。
推荐阅读
- json - jq解析多个值
- python-3.x - Get full content of div when performing urllib GET request
- java - What to use spring Restcontroller or RepositoryRestResource
- lambda-calculus - Lambda 演算函数归约步骤
- wordpress - Disable https for a specific page with a 301 redirection
- c++ - 尝试为屏幕的每个像素着色时出现线条?
- c++ - 当编译时已知引用在结构中占用空间时,是否错过了优化?
- git-extensions - GitExtenstions UI 阻止克隆“服务器的主机密钥不匹配”
- r - 如何使用 Stargazer 为分类变量创建描述表?
- azure-devops - 是否可以在不禁用上游源的情况下将 azure devops 中的上游包列入白名单?