【发布时间】:2019-09-06 09:14:58
【问题描述】:
我正在学习 RxSwift。 但这很困难,所以我发布了一个问题。
情况: 我想在tableView中显示字符的信息。 角色有物品信息和头像信息。 (有两个 API。)
问题: 我成功在tableView中显示了一个数据模型(项目信息)。 但我不知道如何将两个或多个模型绑定到 tableView。
这是我将一个模型绑定到 tableView 时的代码。
视图模型:
let characterDetail = PublishSubject<CharacterDetailResp>()
var characterDetailInfo : CharacterDetailResp = CharacterDetailResp()
let error : PublishSubject<CharacterDetailError> = PublishSubject()
func requestData() {
let URL : String = "\(baseUrl)/servers/characterName/"
AF.request(URL, method: .get, parameters:nil, encoding: JSONEncoding.default).responseObject {
(response : DataResponse<CharacterDetailResp>) in
switch response.result {
case .success:
self.characterDetailInfo = response.value!
self.characterDetail.onNext(self.characterDetailInfo)
case .failure(let err):
if err.localizedDescription == "The Internet connection appears to be offline." {
self.error.onNext(.internetError("Please Check Internet"))
}
else {
self.error.onNext(.serverMessage(err.localizedDescription))
}
}
}
}
视图控制器:
var characterDetailViewModel = ViewModel()
let characterDetail = PublishSubject<CharacterDetailResp>()
let disposeBag = DisposeBag()
func setupBindings() {
characterDetailViewModel
.error
.observeOn(MainScheduler.instance)
.subscribe(onNext: { (error) in
switch error {
case .internetError(let message):
print("Error : \(message)")
case .serverMessage(let message):
print("Warning : \(message)")
}
})
.disposed(by: disposeBag)
tableView.register(UINib(nibName: "CharacterCell", bundle: nil), forCellReuseIdentifier: String(describing: CharacterCell.self))
characterDetailViewModel
.characterDetail
.observeOn(MainScheduler.instance)
.bind(to: tableView.rx.items(cellIdentifier: "CharacterCell", cellType: CharacterCell.self)) {
(row, characterDetail, cell) in
cell.character = characterDetail
}
.disposed(by: disposeBag)
}
我想知道如何将两个或多个 API 模型绑定到 TableView
请帮帮我....
【问题讨论】:
-
你想要什么?例如,您是否需要在表格视图中显示两个不同的单元格?或者它只是一些用标题包裹的单元格?请详细说明。
标签: swift alamofire rx-swift swift5