我正在使用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键值存储?
答案 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策略对您的用例不起作用)。