3

我正在使用 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 上创建这两个应用程序吗?

谢谢!

4

3 回答 3

13

解决了!因此,要在具有相同团队 ID 的两个不同应用程序之间共享键值存储,我必须将权利文件中的 iCloud 键值存储更改为在两个应用程序中相同。默认情况下,该值为 $(TeamIdentifierPrefix)$(CFBundleIdentifier),我将其更改为 $(TeamIdentifierPrefix)my.company.AppA。

希望它可以帮助某人=)

于 2014-02-16T11:32:22.553 回答
4

这是文档的链接。查找“为多个应用程序配置通用键值存储”

于 2015-11-12T20:24:04.870 回答
0

Idk 如果这是 Xcode 9 中的新事物,但如果您转到 Capabilities 选项卡并在那里打开 iCloud 后,您可以选择一个容器或创建一个容器。如果您的所有应用程序都具有此处指定的相同容器,您可以通过文件系统或 Core Data 备份数据,它们都可以访问 iCloud 中的相同数据。我知道这是 100% 正确的,因为我已经做到了,而且效果非常好。

于 2017-12-08T06:24:00.210 回答