为啥我们的应用程序不能在 iCloud 中存储一个简单的键/值对?

Posted

技术标签:

【中文标题】为啥我们的应用程序不能在 iCloud 中存储一个简单的键/值对?【英文标题】:Why can't our app store a simple key/value pair in iCloud?为什么我们的应用程序不能在 iCloud 中存储一个简单的键/值对? 【发布时间】:2011-12-13 06:11:56 【问题描述】:

我已在为 iCloud 设置的配置文件以及与此配置文件关联的开发人员配置文件下,使用适当的权利配置了我们的应用程序以供 iCloud 使用。

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

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

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

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

如果我在此之后调用同步,它会返回 NO。如果我允许大量 更新发生的时间,随后尝试检索数据 还是失败了。

知道罪魁祸首可能在这里吗?

谢谢!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢您的回答。我正在打电话。我最终不得不为此使用支持事件。 Apple 代表给了我几个命令来激活 iCloud 日志记录,这导致错误被清除。我们从未确定发生了什么问题,但我没有更改任何一行代码或项目设置。 如何开启 iCloud 日志记录?【参考方案2】:

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

我还注意到,甚至在我设置我的权利之前,我就能够存储和检索密钥。我假设权利仅允许您将键值存储链接到您的 App ID,以便您公司的多个设备或多个应用可以共享一个存储。

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

【讨论】:

谢谢。我正在打电话。请看我上面的评论。我之所以保留这个问题只是因为我们从未确定最初的问题是什么。

以上是关于为啥我们的应用程序不能在 iCloud 中存储一个简单的键/值对?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们不能直接从函数返回一个 mysqli 对象?对象必须先存储在变量中吗?

在迁移时从 iCloud 迁移到本地商店崩溃的应用程序“对象不能为零” - 使用 Core Data

为啥应用程序包不总是一个包?

如何将数据存储到开发者 icloud 帐户

为啥我们不能在 SQL Server 中的函数内执行存储过程

iCloud:如何存储不在文档中的数据?