文档并不清楚如何在边缘情况下使用 NSUbiquitousKeyValueStore
。
如果我想设置一个值,我知道我应该为 NSUserDefaults
和 NSUbiquitousKeyValueStore
设置一个值,因为 iCloud 可能会被禁用。然而,在我的测试中,即使 iCloud 被禁用,[NSUbiquitousKeyValueStore defaultStore]
也会返回一个有效的对象(在 Mac OS 上测试)。
此外,据我了解,如果启用了 iCloud,NSUbiquitousKeyValueStore
的值将存储到磁盘(并且可以离线使用)。如果您确定数据少于 64KB,那么使用 NSUserDefaults 的原因是什么?
最佳答案
这是一个由 Mugunth Kumar 编写的简单类(谢谢!),可以为您完成工作...除非您有特殊需要,添加一行代码,它将完成对 iCloud 的所有读取和写入...您需要做的就是像往常一样读取和写入 NSUserDefaults...
编辑:
小心,如果您从 NSUserDefaults 中删除一个项目,我上面链接的代码将不会从云中删除该项目。每当您从 NSUSerDefaults 中删除项目时,请对 NSUbiquitousKeyValueStore 执行相同的操作,如下所示:
NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];
关于iphone - 如何一起使用 NSUbiquitousKeyValueStore 和 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070253/