我正在使用NSUbiquitousKeyValueStore
将某些偏好数据同步到iCloud。我发现如果用户在“设置应用程序”中禁用iCloud的“文档和数据”项,NSUbiquitousKeyValueStore
无法将其数据同步到iCloud。所以,我想首先检查此设置是否已打开。我找到了这段代码片段:
NSURL *ubiq = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:nil];
NSLog(@"url=%@",ubiq);
if (!ubiq) {
UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[av show];
return;
}
我想知道的是,这是否是检测的唯一方法,即使我只使用NSUbiquitousKeyValueStore
(不是iCloud文档存储)。还有更好的选择吗?
答案 0 :(得分:13)
基本上,NSUbiquitousKeyValueStore
始终可用,即使用户没有iCloud帐户(在这种情况下,NSUbiquitousKeyValueStore
只是一个简单的本地存储)。因此,一般情况下,如果配置了iCloud帐户,则无需询问自己或用户。
如果你真的想知道,在iOS 5中,唯一的解决方案是你提到的那个。
答案 1 :(得分:4)
我不知道文档是否已更新,但Apple现在说:
要确定iCloud是否可用,尤其是在发布时,请检查 而是ubiquityIdentityToken属性的值
ubiquityIdentityToken
和URLForUbiquityContainerIdentifier
见NSFileManager。
另请注意,Apple称URLForUbiquityContainerIdentifier
可能相对较慢,而且检查ubiquityIdentityToken
的速度相对较快。
适用于iOS6及更高版本。