RxSwift将Observable <bool>转换为Observable <void>

时间:2017-08-17 13:31:26

标签: ios swift generics sequence rx-swift

我对RxSwift并不十分信服,而且很难理解。在审查了不同的材料之后,我仍然无法工作和操纵序列。 总的来说,我有类型转换的问题:

Cannot convert return expression of type 'Observable<Bool>' to return type 'Observable<Void>' (aka 'Observable<()>')    

我有CocoaAction处理,应该返回Observable<Void>

func stopProject() -> CocoaAction {
    return CocoaAction { _ in
        let stopProject = stop(project: self.projectId)
        return stopProject.asObservable() //wrong converting
    }
}

stop函数返回Observable<Bool>

完成视图:

    return stop(project: self.projectId).flatMap { _ in
        Observable<Void>.empty()
    }

3 个答案:

答案 0 :(得分:8)

let voidObservable = boolObservable.map { Void() }

答案 1 :(得分:0)

let voidObservable = boolObservable.map { _ in Void() }

并且如果您只想在布尔值为true的情况下发出值:

let voidObservable = boolObservable.filter { $0 }.map { _ in Void() }

答案 2 :(得分:0)

添加此扩展程序:

public extension ObservableType {
    func mapToVoid() -> Observable<Void> {
        return map { _ in }
    }
}

所以你可以做

myObservable.mapToVoid()