我正在开发使用 iCloud 键值存储的 OSX 10.8 应用程序。它不使用文档存储。
我想确定用户是否可以使用 iCloud 键值存储。
我尝试像这样使用云:
+ (BOOL)isCloudAvailable {
id currentCloudToken = [NSFileManager defaultManager] ubiquityIdentityToken];
return (currentCloudToken) ? YES : NO;
}
但是,对 ubiquityIdentityToken
的调用始终返回 nil,即使用户已登录到 iCloud。
如果我配置了一个 Ubiquity Container 以及键值存储,那么该调用就可以工作。
但是,我的应用程序刚刚被 Apple 审核拒绝,因为它表明我需要“文档和数据存储”,而应用程序中没有任何要求。我只是用它来确定 iCloud 是否可用。
有没有办法确定用户是否可以单独使用 iCloud 键值存储?
最佳答案
iCloud 基础指南有一个表格 compares Document Storage to the Key-Value Store (表 1-1)。与移动文档相反,键值存储应被视为始终有效。
当 iCloud 未启用时,[NSUbiquitousKeyValueStore defaultStore]
也不是 nil
,它甚至存储键/值对 - 它只是不将它们上传到iCloud 服务器。
从 NSUbiquitousKeyValueStore 的角度来看,离线 和注销 之间几乎没有区别。
您还必须记住,一旦设备连接到帐户,已经存储的值就会被推送到服务器。可能需要 to handle conflicts (如果默认的最后一个获胜策略不适用于您的用例)。
关于objective-c - 确定 iCloud Key Value Store 的可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17058027/