当前位置:  开发笔记 > 编程语言 > 正文

RxSwift:使用Zip与不同类型的可观察对象

如何解决《RxSwift:使用Zip与不同类型的可观察对象》经验,为你挑选了2个好方法。

我正在使用RxSwift 2.0.0-beta

如何以拉链方式组合2个不同类型的可观察对象?

// This works
[just(1), just(1)].zip { intElements in
    return intElements.count
}

// This doesn't
[just(1), just("one")].zip { differentTypeElements in 
    return differentTypeElements.count
}

我目前的解决方法是将所有内容映射到组合类型的可选元组,然后将可选元组拉到非可选元组中.

    let intObs = just(1)
        .map { int -> (int: Int?, string: String?) in
            return (int: int, string: nil)
    }
    let stringObs = just("string")
        .map { string -> (int: Int?, string: String?) in
        return (int: nil, string: string)
    }
    [intObs, stringObs].zip { (optionalPairs) -> (int: Int, string: String) in
        return (int: optionalPairs[0].int!, string: optionalPairs[1].string!)
    }

但这显然很难看.有什么更好的方法?



1> Wonjung Kim..:

这适合我.我在Xcode7,RxSwift-2.0.0-beta中测试了它

zip(just(1), just("!")) { (a, b) in 
    return (a,b)
}



2> Jibeex..:

这是如何使其适用于RxSwift 2.3+

Observable.zip(Observable.just(1), Observable.just("!")) {
    return ($0, $1)
}

要么

Observable.zip(Observable.just(1), Observable.just("!")) {
    return (anyName0: $0, anyName1: $1)
}

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有