classKnowViewModel:NSObject{
//被觀察的屬性必須用dynamic修飾
dynamicvardataSourceForKnowViewModel : [KnowModel]! = []//數(shù)組
}
//懶加載創(chuàng)建數(shù)組
/* 1.
lazy var dataArray : NSArray = {
return NSArray()
}()
*/
//2.
lazyvardataSource :Array = {
vartmpArray :Array! = []//初始化
returntmpArray
}()
classKnowHuViewController:UIViewController,UITableViewDataSource,UITableViewDelegate{
//3.MARK:定義屬性viewModel一定要var,并沒有初始化
varknowViewModle :KnowViewModel!
overridefuncviewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.title="知乎MVVM"
//初始化控件
configurationKnowHuView()
//3.初始化knowViewModle
knowViewModle=KnowViewModel.init()
//添加觀察者,寫在初始化后面
knowViewModle.addObserver(self, forKeyPath:"dataSourceForKnowViewModel", options: .New, context:nil)
knowViewModle.getDailyThemesDataWithThemeID(10)
}
//MARK:實現(xiàn)觀察者方法
overridefuncobserveValueForKeyPath(keyPath:String?, ofObject object:AnyObject?, change: [String:AnyObject]?, context:UnsafeMutablePointer) {
ifkeyPath =="dataSourceForKnowViewModel"{
//將viewModle里面的數(shù)據(jù)賦給dataSource
self.dataSource=knowViewModle.dataSourceForKnowViewModel
self.tableView.reloadData()
}
}
//MARK:移除觀察者
deinit{
knowViewModle.removeObserver(self, forKeyPath:"dataSourceForKnowViewModel")
}
}