swift - swift 数组中的 KVO 无法使用 Observable

标签 swift

我使用Alamofire从服务器请求数据,如下面的代码,我想观察数据源,我使用https://github.com/slazyk/Observable-Swift 。 但 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)
            }
    }

ViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()

    ...

    self.viewModel.observableDataSource.afterChange.add { (_) -> () in
        print("afterChange")
        self.tableView?.reloadData()
    }
}

最佳答案

您将 self.dataSource 设置为在值更改后才能观察到。尝试将第 9 行和第 10 行向上调换。

关于swift - swift 数组中的 KVO 无法使用 Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690144/

相关文章:

swift - 将照片添加到阵列并显示到 Collection View 错误

ios - 预览对 AVMutableComposition 所做的更改

ios - 快速更改日期选择器语言

ios - 在 UITableViewCell 中填充动态图像

ios - 快速删除plist

ios - 如何在运行时在 iOS 上更改语言?

swift - SKLabelNode 没有出现在 SKScene 中

swift - 如何在不看到 "untitled-animations"的情况下导出 DAE 文件以在 Scene Kit 中使用?

ios - MapKit 覆盖不出现

ios - 格式化为 2 位小数 (NSDecimalNumber)