【发布时间】:2018-08-04 00:26:02
【问题描述】:
如何共享一个 API 调用?例如,我有以下模型类。这些属性将绑定到不同的 UI 组件。我在 ViewController 中实现这个。但是,我认为我不应该将模型暴露给视图层。相反,我应该给 ViewController 绑定两个 Observable 属性。一个用于 UITextField,另一个用于 UITableView。那么,我应该如何从一个 Observable 创建多个 Observable?
struct CustomerListJSON : Codable {
var UserCount:Int?
var TotalReward:Int?
var CurMonthUserCount:Int?
var CurMonthTotalReward:Int?
var CurYearUserCount:Int?
var CurYearTotalReward:Int?
var UserList:[CustomerJSON]?
}
let getSummery = self.viewModel.getSummery()
getSummery.flatMap{ [weak self](summery) -> Observable<[CustomerJSON]> in
//Label datesource
self?.summeryLabel.text = " \(summery.UserCount ?? 0)\t \(summery.TotalReward ?? 0)\n \(summery.CurMonthUserCount ?? 0)\t \(summery.CurMonthTotalReward ?? 0)\n \(summery.CurYearUserCount ?? 0)\t\(summery.CurYearTotalReward ?? 0)"
return Observable.of(summery.UserList ?? [])
//Table datasource
}.bind(to: self.tableView.rx.items(cellIdentifier: "customerCell", cellType: UITableViewCell.self)){ (index, customer, cell) in
cell.textLabel?.text = "\(customer.UserName ?? "")\t\t\(customer.CreateTime ?? "")"
}.disposed(by: rx.disposeBag)
【问题讨论】: