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の頃にバグレポートがあり、すでに修正されたとあるのですが、ググってみると同じように同様の問題が発生するというのがありました。

とりあえず、今回は別の方法を使ってやってみようと思います。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.