为什么我们的应用程序无法在iCloud中存储简单的键/值对?

时间:2011-12-13 06:11:56

标签: iphone ios icloud

我已根据为iCloud设置的配置文件以及与此配置文件关联的开发人员配置文件,为iCloud使用的应用配置了适当的权利。

应用程序标识符与供应配置文件(com.ourcompany.ourproduct)中指定的内容相匹配。构建应用程序时,我没有遇到任何错误。

iCloud已在我的手机上启用,并且正在运行(我的日历,联系人和书签正在更新中证明)。

然而这失败了(localID是一个有效的NSString):

       NSUbiquitousKeyValueStore* iCloudStore = [NSUbiquitousKeyValueStore
defaultStore];
       [iCloudStore setString:localID forKey:@"ourKey"];

如果我在此之后调用synchronize,则返回NO。如果我允许的话 更新发生的时间,后续尝试检索数据 仍然失败。

知道罪魁祸首是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

在模拟器中,NSUbiquitousKeyValueStore只会将值存储在磁盘上,甚至不会尝试同步任何内容。

在设备上,同步通常会失败,因为您的kvstore-identifier权利设置不正确,但您应该在控制台中看到错误日志。

答案 1 :(得分:2)

你在模拟器中运行吗? iCloud同步似乎不能在模拟器中工作,只能在设备上使用。除此之外,您的代码看起来还不错。我希望它能起作用。

我还注意到,即使在设置权利之前,我也可以存储和检索密钥。我假设权利只允许您将键值存储链接到您的应用程序ID,以便公司的多个设备或多个应用程序可以共享商店。

了解这一点,您可以尝试在权利中完全删除对iCloud的引用,看看是否有效。仅用于测试目的。