无法基于支票挂接到另一个RxSwift流中

时间:2019-06-27 22:07:37

标签: swift io rx-swift

基于网络请求之前添加的检查,无法挂钩到另一个RxSwift流。

我正在构造UserProfile对象,但我想确保已完全创建userProfile对象。我有一个正在创建userProfile对象的流,但是现在有一个检查。我想加入上一个流,以便在完成UserProfile后可以执行网络请求。我不确定如何插入上一个流。我要通过updateUserProfile($ 0)传递UserProfile对象来发出网络请求,但我想确保我就停在那里。

let userInfoResponse = latestLocallySavedUserProfileDictionary
            .map { (dictionary: [String: String?]) in
               return UserProfile(
                    firstName: dictionary["firstName"] ?? "",
                    lastName: dictionary["lastName"] ?? "",
                    phone: dictionary["phone"] ?? "",
                    company: dictionary["company"] ?? "",
                    organizationType: dictionary["organizationType"] ?? "",
                    jobFunction: dictionary["jobFunction"] ?? "",
                    addressLine1: dictionary["addressLine1"] ?? "",
                    addressLine2: dictionary["addressLine2"] ?? "",
                    city: dictionary["city"] ?? "",
                    state: dictionary["state"] ?? nil,
                    zipCode: dictionary["zipCode"] ?? "",
                    country: dictionary["country"] ??  "",
                    languageCode: dictionary["languageCode"] ?? "",
                    merrillDisclaimerAccepted: false, // ignore for now
                    merrillDisclaimerAcceptedDate: "" // ignore for now
                )
            }

            .flatMapLatest { updateUserProfile($0) }
            .share()

        isUserProfileDictionaryComplete = Observable.merge([
            initialUserProfileCall,
            userInfoResponse
                .map{$0.createDictionary()},
            userProfileLocal
            ])
                .asObservable()
                .map{(profileDictionary) -> Bool in
                    return profileDictionary.values.contains(nil) || profileDictionary.values.contains("")
                }
                .ignore(true)

1 个答案:

答案 0 :(得分:2)

我不太了解您要做什么,但是一般来说,您需要找出所有提示网络请求的事件,并将它们放在flatMapLatest之前的流中。

如果您尝试从UserProfilelatestLocallySavedUserProfileDictionaryinitialUserProfileCall中构建userProfileLocal,那么您可能想在合并后进行扫描以收集所有每个字典中的位。