gpt4 book ai didi

ios - RxSwift Observable 不会在数据更改时更新 TableView

转载 作者:行者123 更新时间:2023-11-28 09:30:49 25 4
gpt4 key购买 nike

我设置了 tableview 并希望在数据发生变化时立即更新 UI。我使用调度程序模拟数据更改。但问题是,该表不会更新。有人可以解释如何使用 RxSwift 设置表格 View 以在数据更改时更新它的单元格吗?

  @IBOutlet private var tableView: UITableView!
let europeanChocolates: Variable<[Chocolate]> = Variable([])
let disposeBag = DisposeBag()

//MARK: View Lifecycle

override func viewDidLoad() {
super.viewDidLoad()
title = "Chocolate!!!"
setupCellConfiguration()
europeanChocolates.value = Chocolate.ofEurope
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
var choclate = self.europeanChocolates.value[0]
choclate.countryName = "Denmark"
}

}

//MARK: Rx Setup

private func setupCellConfiguration() {
europeanChocolates.asObservable().bindTo(tableView.rx.items(cellIdentifier: ChocolateCell.Identifier, cellType: ChocolateCell.self)) {
row, chocolate, cell in
cell.configureWithChocolate(chocolate: chocolate)
}
.addDisposableTo(disposeBag)
}

最佳答案

你没有提供你的巧克力的实现,但我假设它是结构,在那种情况下你没有改变任何东西,因为在

    DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
var choclate = self.europeanChocolates.value[0]
choclate.countryName = "Denmark"
}

您从 europeanChocolates 中复制的巧克力被复制到新的 var choclate 中,但您从未保存它。你可以很容易地检查它,如果你试试这个

  override func viewDidLoad() {
super.viewDidLoad()
title = "Chocolate!!!"
setupCellConfiguration()
europeanChocolates.value = Chocolate.ofEurope
europeanChocolates.asObservable().subscribe(onNext: { choco in
print("choco changed \(choco)")
})
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
var choclate = self.europeanChocolates.value[0]
choclate.countryName = "Denmark"
}

}

我认为它不会打印“choco changed”。如果我是对的,这应该对你有帮助:

  override func viewDidLoad() {
super.viewDidLoad()
title = "Chocolate!!!"
setupCellConfiguration()
europeanChocolates.value = Chocolate.ofEurope
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
var choclate = self.europeanChocolates.value[0]
choclate.countryName = "Denmark"
self.europeanChocolates.value[0] = choclate
}

}

如果没有帮助,请提供 Chocolate 和 ChocolateCell 的实现

关于ios - RxSwift Observable 不会在数据更改时更新 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43914919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com