最近使用MVVM在写一个Demo,习惯MVVM的思想后,写一个tableView的时候,我想要自动在数据变动的时候刷新,所以尝试监听一个数组,但是不起作用,后面查了之后,发现 iOS 默认不支持对数组的KVO,因为普通方式监听的对象的地址的变化,而数组地址不变,而是里面的值发生了改变,所以就找到了这篇文章,大家可以对原文有兴趣的,可以去看看。
我总结了一下如何监听数组的方法,其实很简单,其他的步骤都一样(顺带一提我使用的是FBKVOController),就只有在添加和删除数据元素的时候,有些技巧:
[[_model mutableArrayValueForKey:@"modelArray"] addObject:obj];
[[_model mutableArrayValueForKey:@"modelArray"] removeObject:obj];
用这种方式,就能够监听到数组内容的变化,至于原因嘛,可能是这样的取值方式是使用KVC,所以才能触发KVO吧,原文作者说要说明,可是貌似没看到说明啊。