NSUbiquitousKeyValueStoreDidChangeExternallyNotification有时不会被调用

时间:2012-09-28 07:59:35

标签: objective-c ios icloud

我为iCloud键值存储

编写了代码
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyValueStoreChanged:)
                                                 name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification
                                               object:nil];
    LOG(@"sync");
    [[NSUbiquitousKeyValueStore defaultStore] synchronize];

当我删除app并重新安装它时,通常会调用observer方法,但有时不会调用它。

为什么呢?只是网络问题?

1 个答案:

答案 0 :(得分:4)

我遇到类似的问题,无论我等多久,NSUbiquitousKeyValueStoreDidChangeExternallyNotification都没有在安装后的第一次启动时触发。在NSUBiquitousKeyValueStore中设置初始密钥似乎可以解决这个问题。

将观察者添加到默认商店后,我立即调用:

[[NSUbiquitousKeyValueStore defaultStore] setString:@"testValue" forKey:@"testKey"];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];

我使用不同的密钥(即不是 testKey )来表示我想要同步的实际数据。