8

文档不清楚如何使用NSUbiquitousKeyValueStore边缘情况。

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

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

4

3 回答 3

1

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

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

编辑:

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

NSUbiquitousKeyValueStore* keyValueStore=[NSUbiquitousKeyValueStore defaultStore];
[keyValueStore removeObjectForKey: yourKey];
于 2011-11-21T10:25:39.140 回答
1

如果你想同步你所有的 NSUserDefaults,上面提供的 Mugunth Kumar 答案非常有用!

但是,这是一种全有或全无的方法。您不能选择或选择要同步的默认值。

如果您希望更加挑剔,我发现本教程可能会有所帮助。

于 2011-12-31T19:32:38.027 回答
0

我写了一个简单的 iOS 类别,可以用来将值也保存到 NSUbiquitousKeyValueStore 中,同时存储到 NSUserDefalt 中。

希望这有帮助: https ://github.com/RiccardoPaolillo/NSUserDefault-iCloud

于 2014-01-06T16:17:41.547 回答