有什么办法可以在RxSwift的CombineLatest中放置超过8个可观察到的东西?
这是我当前的实现:
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)
}
我发现根据其功能,combinateLatest最多只能接受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)
最佳答案
您可以仅合并前8个,获得合并的可观察值,然后合并后2个,获得合并的可观察值,然后合并两个可观察值。
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)
}