Ios 删除项目RxSwift MVVM模式
大家好,我有一个带有部分的tableview,我正在调用API来填充tableview。我也在使用MVVm架构。现在,用户可以删除项目,但我尝试重新加载节或tableView,但由于删除的项目仍保留在tableView中,因此什么也没有发生。下面是我的代码。谢谢你的帮助 我的ViewModelIos 删除项目RxSwift MVVM模式,ios,swift,mvvm,rx-swift,Ios,Swift,Mvvm,Rx Swift,大家好,我有一个带有部分的tableview,我正在调用API来填充tableview。我也在使用MVVm架构。现在,用户可以删除项目,但我尝试重新加载节或tableView,但由于删除的项目仍保留在tableView中,因此什么也没有发生。下面是我的代码。谢谢你的帮助 我的ViewModel Observable.zip(identiferElements, deviceElements).map {(identifers, devices, _) -> [MyInfoSection]
Observable.zip(identiferElements, deviceElements).map {(identifers, devices, _) -> [MyInfoSection] in
var items: [MyInfoSection] = []
let identiferRepository = identifers.map({ (repository) -> MyInfoSectionItem in
let cellViewModel = IdentifiersCellViewModel(with: repository)
return MyInfoSectionItem.identifiersItem(viewModel: cellViewModel)
})
if identiferRepository.isNotEmpty {
items.append(MyInfoSection.setting(title: "Identifier", items: identiferRepository))
}
let deviceRepository = devices.map({ (repository) -> MyInfoSectionItem in
let cellViewModel = DevicesCellViewModel(with: repository)
return MyInfoSectionItem.devicesItem(viewModel: cellViewModel)
})
if deviceRepository.isNotEmpty {
items.append(MyInfoSection.setting(title: "Active Devices", items: deviceRepository))
}
return items
}.bind(to: elements).disposed(by: rx.disposeBag)
deletedEvent.drive(onNext: { (item) in
switch item {
case .identifiersItem(let viewModel):
identiferDeleted.onNext(viewModel.repository)
case .devicesItem(let viewModel):
deviceDeleted.onNext(viewModel.repository)
}
}).disposed(by: rx.disposeBag)
identiferDeleted.asObservable().flatMapLatest({ [weak self] (value) -> Observable<ResponseBase> in
log(value)
guard let self = self, let id = value.id else { return Observable.just(ResponseBase()) }
return self.provider.deleteAddress(id: id)
.trackActivity(self.loading)
.trackError(self.error)
}).subscribe(onNext: { (res) in
log(res)
}).disposed(by: rx.disposeBag)
将根据请求添加更多代码。谢谢使用
combinelateest
而不是zip
。用户一次只能从一个部分中删除一个项目,zip将等待两个部分发出新值后再发出。可能还有其他问题,但这是肯定的
我需要查看视图模型的可编译代码以进一步提供帮助。Okay@Daniel T。我可以分享一个要点来显示视图模型吗?我已经创建了一个要点,您可以在这里查看视图模型,或者删除不需要编译的部分,或者添加代码以使其可编译。
//viewDidLoad
let input = MyInfoViewModel.Input(trigger: refresh, segmentSelection: segmentSelected, selection: tableView.rx.modelSelected(MyInfoSectionItem.self).asDriver(), deleted: tableView.rx.modelDeleted(MyInfoSectionItem.self).asDriver())
let output = viewModel.transform(input: input)