objective-c - 确定 iCloud Key Value Store 的可用性

标签 objective-c macos cocoa icloud

我正在开发使用 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/

相关文章:

ios - 在我的本地 mac 上安装解析器服务器。从第一步到最后一步的完整指南

objective-c - 使用什么对象进行特殊文本编辑

objective-c - 将我的 Mac 应用分发给 friend

iphone - 在 iPhone SDK 中将图像转换为黑白、棕褐色、灰度等

ios - UISearchBar:更改输入字段的背景颜色

ios - 如何在不自定义的情况下在一个单元格中有多行?

objective-c - 即使在 alloc/init 之后,我的 NSMutableArray 也会在函数范围之外丢失它的对象

objective-c - cocoa:检测所有正在运行的应用程序的非事件状态

iPhone OS 当前使用情况统计信息(尤其是 2.x 与 3.x)

objective-c - 你如何在 NSButton 上垂直居中图像