RAC 无法监听数组的变化
2017-07-21 本文已影响1043人
踏云小子
报错
代码如下,当给数组增加元素时,rac居然监听不到,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];//这里就是我们要监听的数组
}
NSLog(@"");
}];
说一句,现在我们把self.kvoArray
里的元素改变,也能监听得到
- 手动加kvo,使用
mutableArrayValueForKey