報錯
代碼如下宪塔,當(dāng)給數(shù)組增加元素時磁奖,rac居然監(jiān)聽不到,shit某筐,fuck比搭!原來是NSMutableArray本來就是沒有kvo,而rac就是基于kvo的,so身诺,你懂的
NSMutableArray *array = @[@"a", @"b"].mutableCopy;
self.array = array;
[RACObserve(self, array) subscribeNext:^(id x) {
}];
[array addObject:@"c"];
方案
谷歌了下蜜托,大致有兩種思路:
KVOMutableArray* array = [KVOMutableArray new];
[array addObject:@"hello"];
[array addObject:@"world"];
self.kvoArray = array;
[[self.kvoArray changeSignal] subscribeNext:^(RACTuple *tuple) {
if (tuple.count) {
NSMutableArray *ourArray = [tuple objectAtIndex:0];//這里就是我們要監(jiān)聽的數(shù)組
}
NSLog(@"");
}];
說一句,現(xiàn)在我們把self.kvoArray
里的元素改變霉赡,也能監(jiān)聽得到
- 手動加kvo橄务,使用
mutableArrayValueForKey