我正在使用NSUbiquitousKeyValueStore从iOS应用A将数据存储到iCloud但我无法在我的iOS应用B上获得任何对象。但是我可以在iOS应用A上获取该对象。 两个应用程序都具有相同的团队ID,并且都具有相同的Ubiquity容器标识符。 我已经通过XCode 5添加了iCloud功能,它自动创建了权利文件。 我还为两个App ID打开了iCloud选项。
以下是我如何从App A设置数据:
[[NSUbiquitousKeyValueStore defaultStore] setObject:value forKey:key];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
以下是我在App B上获取数据的方法:
[[NSUbiquitousKeyValueStore defaultStore] synchronize];
[[NSUbiquitousKeyValueStore defaultStore] objectForKey:key];
我不知道这是否重要,但我在调试模式下运行这两个应用程序。我是否必须在启用了iCloud的iTunes上创建两个应用程序?
谢谢!
答案 0 :(得分:13)
解决了!因此,要在具有相同团队ID的两个不同应用程序之间共享Key Value Store,我必须将权利文件中的iCloud Key-Value Store更改为在两个应用程序中相同。 默认值为$(TeamIdentifierPrefix)$(CFBundleIdentifier),我将其更改为$(TeamIdentifierPrefix)my.company.AppA。
希望它可以帮助某人=)
答案 1 :(得分:4)
此处link to documentation。寻找"为多个应用配置通用键值存储"
答案 2 :(得分:0)
如果这是Xcode 9中的新功能,请尝试,但如果您转到功能选项卡并在此处打开iCloud后,您可以选择一个容器或创建一个容器。如果您的所有应用程序都具有此处指定的相同容器,则可以通过文件系统或Core Data备份数据,并且它们都可以在iCloud中访问相同的数据。我知道这是100%真实的,因为我已经做到了,而且效果非常好。