【发布时间】:2022-01-22 02:19:55
【问题描述】:
我有两个视图模型。一个用于单个联系人管理,另一个用于整个联系人列表管理。
而且我有可能发生的两个错误。在这两种情况下,我都应该应用相同的操作 - 以显示错误。但是我该如何更优雅地做到这一点,以便每次,无论来自哪个视图模型错误,都只根据最后一个错误来显示它?
我现在有这个代码:
private func observeErrors(){
let popup = PopupViewController.instantiate()
let popupActionHandler = {
popup.dismiss(animated: true, completion: nil)
}
contactsViewModel.error.subscribe(onNext: { error in
print(error.localizedDescription)
switch error {
case .unknown:
self.showPopup(popup: popup, popupTitle: "An unknown error occured".localized, popupMessage: "Please try again.".localized, buttonTitle: nil, actionHandler: popupActionHandler)
case .serverResponse(let message):
self.showPopup(popup: popup, popupTitle: "An error occured".localized, popupMessage: message, buttonTitle: nil, actionHandler: popupActionHandler)
}
}).disposed(by: disposeBag)
contactViewModel.error.subscribe(onNext: { error in
print(error.localizedDescription)
switch error {
case .unknown:
self.showPopup(popup: popup, popupTitle: "An unknown error occured".localized, popupMessage: "Please try again.".localized, buttonTitle: nil, actionHandler: popupActionHandler)
case .serverResponse(let message):
self.showPopup(popup: popup, popupTitle: "An error occured".localized, popupMessage: message, buttonTitle: nil, actionHandler: popupActionHandler)
}
}).disposed(by: disposeBag)
}
但这是重复的。我尝试使用combineLatest,但我不确定如何确定发生的最后一个错误是什么并只显示它?
【问题讨论】:
标签: ios swift rx-swift rx-cocoa