确定iCloud密钥值存储的可用性

时间:2013-06-12 05:09:01

标签: objective-c macos cocoa icloud

我正在使用iCloud Key Value商店的OSX 10.8应用程序。它使用文档存储。

我想确定iCloud Key Value商店是否可供用户使用。

我试图像使用云一样:

+ (BOOL)isCloudAvailable {
       id currentCloudToken = [NSFileManager defaultManager] ubiquityIdentityToken];
       return (currentCloudToken) ? YES : NO;
}

但是,即使用户登录iCloud,对ubiquityIdentityToken的调用也始终返回nil。

如果我配置Ubiquity容器以及键值存储,那么该调用确实有效。

然而,我只是让我的应用程序被Apple评论拒绝,表明我需要" Document&数据存储"没有在应用程序中的任何要求。我只是用它来确定iCloud是否可用。

无论如何确定用户是否可以使用iCloud键值存储?

1 个答案:

答案 0 :(得分:10)

iCloud Fundamentals指南有一个compares Document Storage to the Key-Value Store表(表1-1)。与移动文档相反,应将关键值存储视为始终有效可用

当iCloud未启用时,[NSUbiquitousKeyValueStore defaultStore]也不会nil,它甚至会存储键/值对 - 它只是不会将它们上传到iCloud服务器。 从NSUbiquitousKeyValueStore的角度来看,离线已注销之间几乎没有区别。

您还必须记住,只要设备连接到帐户,就会将已存储的值推送到服务器。可能需要to handle conflicts(如果默认的last-one-wins策略对您的用例不起作用)。