KVO如何才能直接监听到数组的变化

转自
关于使用KVO监听数组的问题

首先,数组不能直接使用KVO使用监听。当我们想要使用KVO监听数组的状态时改变然后尽心操作时,我们需要进行一下几部。

1.KVO不能监听UIViewController中的数组。我们需要先创建一个模型,将数组添加值模型中。

@interface SelectedsArr : NSObject

@property (nonatomic, strong) NSMutableArray *selecteds;///<选中的选项集合

@end

2.建立观察者以及观察者对象

[self addObserver:self forKeyPath:@"selecteds" options:NSKeyValueObservingOptionNew context:nil];

3.处理Key的变化

这里,很重要,当向模型中的可变数组添加新成员时,不能直接用[self.selectedsArr.selecteds addObject:]方法。而使用该用下面的方法

[[self mutableArrayValueForKey:@"selecteds"] addObject:@"要插入的对象"]];

4.在下面的方法添加监听到变化后要执行的语句

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context{

}

5.移除监听

[self removeObserver:self forKeyPath:@"selecteds"];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,212评论 30 472
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,776评论 0 9
  • 首先,数组不能直接使用KVO使用监听。当我们想要使用KVO监听数组的状态时改变然后尽心操作时,我们需要进行一下几部...
    涂鸦的熊猫阅读 6,582评论 17 12
  • 本文结构如下: Why? (为什么要用KVO) What? (KVO是什么) How? ( KVO怎么用) Mo...
    等开会阅读 1,663评论 1 21
  • 【原】iOS下KVO使用过程中的陷阱KVO,全称为Key-Value Observing,是iOS中的一种设计模式...
    nadou23阅读 1,984评论 0 0