swift阵列中的KVO不工作使用可观察
我使用Alamofire从服务器请求数据,就像下面的代码一样,我想观察我使用的数据源。 但是永远不能调用swift阵列中的KVO不工作使用可观察,swift,Swift,我使用Alamofire从服务器请求数据,就像下面的代码一样,我想观察我使用的数据源。 但是永远不能调用self.tableView?.reloadData() ViewModel.swift var dataSource: [WishOrder] = [WishOrder]() var observableDataSource: Observable<[WishOrder]> = Observable([WishOrder]()) Alamofire.request(Rou
self.tableView?.reloadData()
ViewModel.swift
var dataSource: [WishOrder] = [WishOrder]()
var observableDataSource: Observable<[WishOrder]> = Observable([WishOrder]())
Alamofire.request(Router.WishOrder(type: self.type, page: 1, pageAmount: self.pageAmount))
.validate()
.responseCollection { (response:Response<[WishOrder], NSError>) -> Void in
let result = response.result
switch result {
case .Success(let value):
self.dataSource = value as [WishOrder]
self.observableDataSource.value = self.dataSource
case .Failure(let error):
SVProgressHUD.showErrorWithStatus(error.localizedDescription)
}
}
您的
self.dataSource
设置将在值已更改后进行观察。尝试将第9行和第10行向上切换。只需快速查看可观察的Swift即可.afterChange
方法仅在var观察到更改时调用。这就是为什么在更改值之前需要设置观察值。仅供参考。
override func viewDidLoad() {
super.viewDidLoad()
...
self.viewModel.observableDataSource.afterChange.add { (_) -> () in
print("afterChange")
self.tableView?.reloadData()
}
}