使用 RxSwift 在 combineLatest 中超过 8 个参数

vid*_*joe 9 reactive-programming ios swift reactive

有没有办法在 RxSwift 中的 combineLatest 中放置 8 个以上的 observable?

这是我目前的实现:

let registerUserParameters = Observable.combineLatest(
        firstname.asObservable(),
        lastname.asObservable(),
        email.asObservable(),
        mobile.asObservable(),
        addresses.asObservable(),
        cities.asObservable(),
        pword.asObservable(),
        confirm_pword.asObservable(),
        instagramid.asObservable(),
        facebookid.asObservable()) {
            ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9)
    }
Run Code Online (Sandbox Code Playgroud)

我发现 combineLatest 根据其功能最多只接受 8 个参数。

public static func combineLatest<O1, O2, O3, O4, O5, O6, O7, O8>(_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: @escaping (O1.E, O2.E, O3.E, O4.E, O5.E, O6.E, O7.E, O8.E) throws -> Self.E) -> RxSwift.Observable<Self.E> where O1 : ObservableType, O2 : ObservableType, O3 : ObservableType, O4 : ObservableType, O5 : ObservableType, O6 : ObservableType, O7 : ObservableType, O8 : ObservableType)
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 13

你可以只组合前 8 个,得到组合的 observable,然后组合最后 2 个,得到组合的 observable,然后组合两个 observable。

let first8 = Observable.combineLatest(
        firstname.asObservable(),
        lastname.asObservable(),
        email.asObservable(),
        mobile.asObservable(),
        addresses.asObservable(),
        cities.asObservable(),
        pword.asObservable(),
        confirm_pword.asObservable()) {
            ($0, $1, $2, $3, $4, $5, $6, $7)
    }

let last2 = Observable.combineLatest(
    instagramid.asObservable(),
    facebookid.asObservable()) {
        ($0, $1)
    }

let registerUserParameters = Observable.combineLatest(first8, last2) {
    ($0.0, $0.1, $0.2, $0.3, $0.4, $0.5, $0.6, $0.7, $1.0, $1.1)
}
Run Code Online (Sandbox Code Playgroud)