swift数组中的KVO无法使用Observable

时间:2016-01-09 05:45:24

标签: swift

我使用Alamofire从服务器请求数据,如下面的代码,我想观察dataSource,我使用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()
    }
}

1 个答案:

答案 0 :(得分:0)

在值已经更改后,您的self.dataSource设置为值得观察。尝试将第9行和第10行切换为。