【问题标题】:Local key-value storage other than NSUserDefaultsNSUserDefaults 以外的本地键值存储
【发布时间】:2013-06-18 18:25:40
【问题描述】:

我已按照 Apple 文档中有关通过 iCloud 同步首选项的内容进行操作 - 本质上,迭代“更新”用户信息中的每个键并将其设置为 [NSUserDefaults standardDefaults].

但我还有一些其他数据希望以相同的格式保存,但不应同步 - 只是 NSDictionaries 的一小部分数组。

有没有办法以相同的方式将它们存储在不同的地方?或者我应该更改我的“更新表单 iCloud”方法以通过键名明确排除这些?这对我来说似乎有点不灵活且容易出错(记住每当我更改要在本地存储的内容时更新“要排除的键”)。

【问题讨论】:

  • 我们只是在谈论将 nsdictionaries 写入本地 plist 文件吗?

标签: ios cocoa nsuserdefaults icloud key-value


【解决方案1】:

您可以将此类数据存储在“/Application Support/”中 - 使用标准 API 来定位用户的 Library 文件夹(将在您的容器中)。 “应用程序支持”文件夹本身可能不存在,因此您必须检查并在需要时创建。除非您创建它,否则您自己的应用程序的文件夹将不存在,因此请检查并创建。

各种集合具有从 URL 读取/写入的方法,例如对于NSArray

+ (id)arrayWithContentsOfURL:(NSURL *)aURL;
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;

一旦你有了上面目录的路径,就为一个适当命名的文件创建一个 URL,例如“theArrayOfDictionaries.plist”,并使用这些方法读取/写入它。唯一需要注意的是集合只能包含可以存储在属性列表中的类型。如果您有非 plist 类型,例如NSColor 或者你自己的类,那么你需要在写/读之前/之后将它们转换为NSData - 见this page for how to do this for NSColor,其他类型可以类似处理。

HTH。

【讨论】:

  • 这是我通常用来保存一些基本用户设置的方法。对于我在应用程序中经常访问的设置,我会偶尔将设置读入内存以避免读取额外的文件,但通常效果很好
猜你喜欢
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 2019-01-18
  • 2021-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多