美文网首页iOS
RAC 无法监听数组的变化

RAC 无法监听数组的变化

作者: 踏云小子 | 来源:发表于2017-07-21 15:54 被阅读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

相关文章

网友评论

    本文标题:RAC 无法监听数组的变化

    本文链接:https://www.haomeiwen.com/subject/mcdekxtx.html