除NSUserDefaults之外的本地键值存储

时间:2013-06-18 18:25:40

标签: ios cocoa nsuserdefaults icloud key-value

我已经通过iCloud关注了同步首选项的Apple文档 - 基本上,迭代'更新'用户信息中的每个键并在[NSUserDefaults standardDefaults].中设置

但是我还有一些其他数据我希望以相同的格式保留但不应该同步 - 只需要一小部分NSDictionaries

有没有办法以相同的方式存储这些但是在一个单独的地方?或者我应该更改我的'更新形式iCloud'方法,以明确地通过密钥名称排除这些?这似乎有点不灵活且容易出错(记得在我改变我想在本地存储的内容时更新'要排除的键'。)

1 个答案:

答案 0 :(得分:2)

您可以将此类数据存储在“<库文件夹> / Application Support /< app bundle id>”中 - 使用标准API查找用户的Library文件夹(它将在您的容器中)。 “Application Support”文件夹本身可能不存在,因此您必须检查并创建。除非您创建它,否则您自己的应用程序的文件夹将不存在,因此请检查并创建。

各种集合都有从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。