iphone - 如何一起使用 NSUbiquitousKeyValueStore 和 NSUserDefaults

标签 iphone cocoa nsuserdefaults icloud nsubiquitouskeyvaluestore

文档并不清楚如何在边缘情况下使用 NSUbiquitousKeyValueStore

如果我想设置一个值,我知道我应该为 NSUserDefaultsNSUbiquitousKeyValueStore 设置一个值,因为 iCloud 可能会被禁用。然而,在我的测试中,即使 iCloud 被禁用,[NSUbiquitousKeyValueStore defaultStore] 也会返回一个有效的对象(在 Mac OS 上测试)。

此外,据我了解,如果启用了 iCloud,NSUbiquitousKeyValueStore 的值将存储到磁盘(并且可以离线使用)。如果您确定数据少于 64KB,那么使用 NSUserDefaults 的原因是什么?

最佳答案

我正在使用 http://blog.mugunthkumar.com/coding/ios-code-mkicloudsync-sync-your-nsuserdefaults-to-icloud-with-a-single-line-of-code/

这是一个由 Mugunth Kumar 编写的简单类(谢谢!),可以为您完成工作...除非您有特殊需要,添加一行代码,它将完成对 iCloud 的所有读取和写入...您需要做的就是像往常一样读取和写入 NSUserDefaults...

编辑:

小心,如果您从 NSUserDefaults 中删除一个项目,我上面链接的代码将不会从云中删除该项目。每当您从 NSUSerDefaults 中删除项目时,请对 NSUbiquitousKeyValueStore 执行相同的操作,如下所示:

NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];

关于iphone - 如何一起使用 NSUbiquitousKeyValueStore 和 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070253/

相关文章:

iphone - 如何在应用程序中启用 iOS 6.0 全景相机?

objective-c - Cocoa内存管理,为什么我的应用程序不断使用更多?

iphone - 使用 NSUserDefaults 保存 NSMutableArray

ios - 在 iOS 设备中保留批处理消息历史记录

ios - 显示事件指示器,直到所有图像都成功加载

iphone - 替换 UITextView 中的文本

iphone - 如何使委托(delegate)对象在整个 ViewController 中都可访问

Objective-C - 循环遍历所有已安装的应用程序

objective-c - 在启用/不启用沙箱的情况下在 Cocoa App 中复制文件

ios - 应用程序会丢失无线安装的 NSUserDefault 数据吗?