Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将RxMoya单个响应映射到RxSwift可观测结果_Swift_Rx Swift_Moya - Fatal编程技术网

将RxMoya单个响应映射到RxSwift可观测结果

将RxMoya单个响应映射到RxSwift可观测结果,swift,rx-swift,moya,Swift,Rx Swift,Moya,我正在尝试将一个单个映射到一个可观察的,但是我不确定如何做 我目前的职能如下: func accountInfo() -> Observable<AccountInfo> { return provider .rx .request(.accountInfo) .map(AccountInfo.self) .asObservab

我正在尝试将一个
单个
映射到一个
可观察的
,但是我不确定如何做

我目前的职能如下:

    func accountInfo() -> Observable<AccountInfo> {
        return provider
                .rx
                .request(.accountInfo)
                .map(AccountInfo.self)
                .asObservable()
    }
func accountInfo()->可观察{
返回提供者
.rx
.request(.accountInfo)
.map(AccountInfo.self)
.asObservable()
}
不过,我想提出以下建议:

    func accountInfo() -> Observable<Result<AccountInfo, MoyaError>> {
        return provider
                .rx
                .request(.accountInfo)
                .mapResult(AccountInfo.self)
                .asObservable()
    }
func accountInfo()->可观察{
返回提供者
.rx
.request(.accountInfo)
.mapResult(AccountInfo.self)
.asObservable()
}
创建
mapResult
扩展的任何帮助都将非常有用

谢谢诸位

诸如此类:

extension Single {
    var asObservableResult: Observable<Result<Element, Error>> {
        return asObservable()
            .map { .success($0) }
            .catchError { .just(.failure($0)) }
    }
}
扩展单{
var ASObservable结果:可观察{
返回asObservable()
.map{.success($0)}
.catchError{.just(.failure($0))}
}
}
虽然将其映射到驱动程序而不是可观察到的对象可能更有意义。。。否则,您可能会有两个错误

extension Single {
    var asDriverResult: Driver<Result<Element, Error>> {
        return asObservable()
            .map { .success($0) }
            .asDriver(onErrorRecover: { .just(.failure($0)) })
    }
}
扩展单{
var asDriverResult:驱动程序{
返回asObservable()
.map{.success($0)}
.asDriver(onErrorRecover:{.just(.failure($0))})
}
}