我已根据为iCloud设置的配置文件以及与此配置文件关联的开发人员配置文件,为iCloud使用的应用配置了适当的权利。
应用程序标识符与供应配置文件(com.ourcompany.ourproduct)中指定的内容相匹配。构建应用程序时,我没有遇到任何错误。
iCloud已在我的手机上启用,并且正在运行(我的日历,联系人和书签正在更新中证明)。
然而这失败了(localID是一个有效的NSString):
NSUbiquitousKeyValueStore* iCloudStore = [NSUbiquitousKeyValueStore
defaultStore];
[iCloudStore setString:localID forKey:@"ourKey"];
如果我在此之后调用synchronize,则返回NO。如果我允许的话 更新发生的时间,后续尝试检索数据 仍然失败。
知道罪魁祸首是什么?
谢谢!
答案 0 :(得分:3)
在模拟器中,NSUbiquitousKeyValueStore只会将值存储在磁盘上,甚至不会尝试同步任何内容。
在设备上,同步通常会失败,因为您的kvstore-identifier权利设置不正确,但您应该在控制台中看到错误日志。
答案 1 :(得分:2)
你在模拟器中运行吗? iCloud同步似乎不能在模拟器中工作,只能在设备上使用。除此之外,您的代码看起来还不错。我希望它能起作用。
我还注意到,即使在设置权利之前,我也可以存储和检索密钥。我假设权利只允许您将键值存储链接到您的应用程序ID,以便公司的多个设备或多个应用程序可以共享商店。
了解这一点,您可以尝试在权利中完全删除对iCloud的引用,看看是否有效。仅用于测试目的。