最近使用MVVM在寫一個Demo,習慣MVVM的思想后,寫一個tableView的時候,我想要自動在數據變動的時候刷新,所以嘗試監聽一個數組,但是不起作用,后面查了之后,發現 iOS 默認不支持對數組的KVO,因為普通方式監聽的對象的地址的變化,而數組地址不變,而是里面的值發生了改變,所以就找到了這篇文章,大家可以對原文有興趣的,可以去看看。
我總結了一下如何監聽數組的方法,其實很簡單,其他的步驟都一樣(順帶一提我使用的是FBKVOController),就只有在添加和刪除數據元素的時候,有些技巧:
[[_model mutableArrayValueForKey:@"modelArray"] addObject:obj];
[[_model mutableArrayValueForKey:@"modelArray"] removeObject:obj];
用這種方式,就能夠監聽到數組內容的變化,至于原因嘛,可能是這樣的取值方式是使用KVC,所以才能觸發KVO吧,原文作者說要說明,可是貌似沒看到說明啊。