RxSwift 从 Observable 序列中的一项获取值
RxSwift obtain value from one item in Observable sequence
我正在尝试逐渐将我的应用程序转换为 RxSwift / MVVM。但是我觉得我做的有些不对。
在这个例子中,我有一个静态 table 和这个特定信息。
let itens = Observable.just([
MenuItem(name: GlobalStrings.menuItemHome, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemProfile, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemLevels, nameClass: "GPLevelsVC"),
])
当用户 select 一个单元格时,我需要知道模型(MenuItem)和索引,但我在这方面遇到了麻烦
tableView.rx
.itemSelected
.map { [weak self] indexPath in
return (indexPath, self?.modelView.itens.elementAt(indexPath.row))
}
.subscribe(onNext: { [weak self] indexPath, model in
self?.tableView.reloadData()
//can´t get MenuItem because model its a observable
//self?.didSelect((indexPath as NSIndexPath).row, name.nameClass)
})
.addDisposableTo(disposeBag)
提前致谢
您必须执行后续步骤:
使用变量。我认为这是一个更好的解决方案。
let itens = Variable([
MenuItem(name: GlobalStrings.menuItemHome, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemProfile, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemLevels, nameClass: "GPLevelsVC"),
])
如果要从单击的单元格中获取索引和模型,请使用以下代码。
tableView.rx
.itemSelected
.map { index in
return (index, self.items.value[index.row])
}
.subscribe(onNext: { [weak self] index, model in
// model is MenuItem class
})
.addDisposableTo(disposeBag)
希望我的回答对您有所帮助。如果您想了解有关任务中 RxSwift 机会的更多信息,请告诉我。祝你好运!
我正在尝试逐渐将我的应用程序转换为 RxSwift / MVVM。但是我觉得我做的有些不对。
在这个例子中,我有一个静态 table 和这个特定信息。
let itens = Observable.just([
MenuItem(name: GlobalStrings.menuItemHome, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemProfile, nameClass: "GPMainVC"),
MenuItem(name: GlobalStrings.menuItemLevels, nameClass: "GPLevelsVC"),
])
当用户 select 一个单元格时,我需要知道模型(MenuItem)和索引,但我在这方面遇到了麻烦
tableView.rx
.itemSelected
.map { [weak self] indexPath in
return (indexPath, self?.modelView.itens.elementAt(indexPath.row))
}
.subscribe(onNext: { [weak self] indexPath, model in
self?.tableView.reloadData()
//can´t get MenuItem because model its a observable
//self?.didSelect((indexPath as NSIndexPath).row, name.nameClass)
})
.addDisposableTo(disposeBag)
提前致谢
您必须执行后续步骤:
使用变量。我认为这是一个更好的解决方案。
let itens = Variable([ MenuItem(name: GlobalStrings.menuItemHome, nameClass: "GPMainVC"), MenuItem(name: GlobalStrings.menuItemProfile, nameClass: "GPMainVC"), MenuItem(name: GlobalStrings.menuItemLevels, nameClass: "GPLevelsVC"), ])
如果要从单击的单元格中获取索引和模型,请使用以下代码。
tableView.rx .itemSelected .map { index in return (index, self.items.value[index.row]) } .subscribe(onNext: { [weak self] index, model in // model is MenuItem class }) .addDisposableTo(disposeBag)
希望我的回答对您有所帮助。如果您想了解有关任务中 RxSwift 机会的更多信息,请告诉我。祝你好运!