【问题标题】:RxSwift in swift 4, binding data to a tableviewswift 4 中的 RxSwift,将数据绑定到 tableview
【发布时间】:2018-03-14 16:50:59
【问题描述】:

我在尝试遵循 MVVM 模式和 RxSwift 介绍时遇到问题。

大约下到一半,他将数据源(汽车)绑定到tableView。这是我似乎无法在 swift 4 中工作的部分。

我正在使用以下 pod:

pod 'RxSwift', '4.0.0-beta.0'
pod 'RxCocoa', '4.0.0-beta.0'

这是我尝试过的错误我得到的代码(认为在图片上更容易看到):

我已经查看了所有其他提到解决此问题的问题:
RxSwift, RxCocoa and UITableview
Cannot set bind(to: UITableView) with RxSwift Variable asObservable()

但似乎无法使其与 swift 4 版本一起使用。 希望大家能帮帮我:)

【问题讨论】:

    标签: ios uitableview swift4 xcode9 rx-swift


    【解决方案1】:

    错误信息具有误导性。问题在于您初始化cars 属性的方式。您的 cars Variable 包装了一个可选类型。您不能将其绑定到表视图。

    把初始化改成下面这行就一切正常了:

    var cars = Variable((UIApplication.shared.delegate as! AppDelegate).cars)
    

    顺便说一句,您不必将cars 数组包装在Variable 中,您可以将其保留为数组:

    let cars = (UIApplication.shared.delegate as! AppDelegate).cars
    

    然后使用 Observable.of() 将其绑定到表格视图:

    Observable.of(cars).bind(to: tableView.rx.items(cellIdentifier: "CarCell", cellType: CarTableViewCell.self)) { (_, carViewModel: CarViewModel, cell) in
       cell.carViewModel = carViewModel
    }.addDisposableTo(disposeBag)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2018-06-10
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多