UserDefaultsに保存した値を取得しTableViewを更新しようと下記のようなコードを書きました。
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:@"Key"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:NULL];
}
- (void)dealloc {
[[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:@"Key"];
}
- (void)observeValueForKeyPath:(NSString *) keyPath ofObject:(id) object change:(NSDictionary *) change context:(void *) context
{
if ([keyPath isEqualToString:@"Key"]) {
//Do something
[ self.tableView reloadData ];
}
}
そしたら、UserDefaultsに変更をすると、2回通知が来てしまいました。しかも、なぜか初回はそもそもの通知が来ない。。Developer Forum等をみると、iOS9の頃にバグレポートがあり、すでに修正されたとあるのですが、ググってみると同じように同様の問題が発生するというのがありました。
とりあえず、今回は別の方法を使ってやってみようと思います。