13

我正在使用NSUbiquitousKeyValueStore将一些偏好数据同步到 iCloud。我发现如果用户在“设置应用程序”中禁用 iCloud 的“文档和数据”项,NSUbiquitousKeyValueStore则无法将其数据同步到 iCloud。所以,我想先检查一下这个设置是否打开。我找到了这个代码片段:</p>

    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 文档存储)。有更好的选择吗?

4

2 回答 2

13

基本上,NSUbiquitousKeyValueStore它始终可用,即使用户没有 iCloud 帐户(在这种情况下,NSUbiquitousKeyValueStore只是一个简单的本地存储)。所以一般来说,你不需要问自己或用户是否有配置的 iCloud 帐户。

如果您真的想确定,在 iOS 5 中,唯一的解决方案就是您提到的那个。

于 2012-06-24T03:59:23.073 回答
5

我不知道文档是否已更新,但苹果现在说:

要确定 iCloud 是否可用,尤其是在启动时,请检查 ubiquityIdentityToken 属性的值

参见NSFileManagerubiquityIdentityTokenURLForUbiquityContainerIdentifier. _

另请注意,Apple 说这URLForUbiquityContainerIdentifier可能相对较慢,而检查ubiquityIdentityToken相对较快。

这适用于 iOS6 及更高版本。

于 2014-10-30T22:41:13.030 回答