KVOでNSMutableArrayを監視する
まずは、NSMutableArrayに対してKVOで監視するようにセットしてやります。
ViewController.m
- (void)viewDidLoad { [super viewDidLoad]; //FeedItemManagerクラスn items プロパティに変更があったらKVO発火 [[FeedItemManager sharedManager] addObserver:self forKeyPath:@"items" options:NSKeyValueObservingOptionNew context:nil]; } //これが発火するメソッド - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if (object == [FeedItemManager sharedManager] && [keyPath isEqualToString:@"items"]) { //色々処理 } }
ところが、下のように値をかえても発火しません。
self.items = deedItems;
調べた結果、以下のように mutableArrayValueForKey でラップしてやると発火するようになりました。
[[self mutableArrayValueForKey:@"items"] insertObjects:items atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, items.count)]];
まわりくどいやり方ですね。。。