【问题标题】:iOS iCloud not restoring after deleting App删除 App 后 iOS iCloud 未恢复
【发布时间】:2012-07-20 15:15:06
【问题描述】:

我正在尝试让 iCloud 中的键值存储正常工作,但遇到了一个奇怪的问题。

我使用以下方式存储数据:

[[NSUbiquitousKeyValueStore defaultStore] setObject:@"SomeValue" forKey:@"SomeKey"];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];

我使用以下方法读取数据:

someValue = [[NSUbiquitousKeyValueStore defaultStore] objectForKey:@"SomeKey"];

当我启动和停止应用程序时,这一切都很好。值被存储,我看到正在读取的值。一切都很好。

然后我从我的设备中删除应用程序并再次加载(通过 xcode)。现在,我没有看到任何数据从云端下来。

你可以删除一个应用程序然后恢复数据(在我的例子中是游戏保存状态)不是 iCloud 的要点之一吗?

为什么删除我的应用并重新安装(在 xcode 中运行)会导致所有 iCloud 数据消失?

我在设备上运行它,而不是模拟器。我已经在 iOS 5 和 iOS 6 上尝试过,结果相同。

NSUbiquitousKeyValueStore 看起来使用起来非常简单,但我显然做错了什么。

【问题讨论】:

    标签: icloud iso


    【解决方案1】:

    首先,在读取数据之前尝试同步,以确保来自 iCloud 的最新更新。

    您有其他可以测试的设备吗?如果是这样,请在一台设备上运行写入代码,然后在另一台设备上运行读取代码。可能是即使您使用的是 NSUbiquitiousKeyValueStore,但您认为它实际上并没有同步。它可以在您的设备上运行的原因是键值存储在本地可用,但在 iCloud 中不可用。因此,当您删除应用时,您将删除数据的本地(也是您唯一的)副本。

    【讨论】:

      【解决方案2】:

      我发现您需要注册 NSUbiquitousKeyValueStoreDidChangeExternallyNotification 通知才能使同步工作。没有它,它不会在重新安装后保留数据。

      - (void)iCloudKeyStateChanged:(NSNotification*)n {
      }
      
      - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
      
          ...
      
          [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(iCloudKeyStateChanged:) name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification object:nil];
      
      }
      

      【讨论】:

        猜你喜欢
        • 2016-07-18
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        • 2020-07-09
        • 2020-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多