IOS - 将NSDictionary保存到磁盘

时间:2013-08-12 21:08:10

标签: ios cocoa

我有一个NSDictionary,其中包含一堆数据,这些数组具有用于键的NSDate,每个数组包含可变数量的NSStrings

这样的事情:

NSDictionary

Key: 1999-whatever-whatever
Object: (Array)
   "Some string"
   "Some other string"

Key: 2000-whatever-whatever
Object: (Array)
    "Some third string"

我一直在寻找writeToFile,但它似乎不支持NSDictionarys有密钥的NSDates,所以我查看了KeydArchiver,这是最好的方法吗?

如果是,那么关于该主题的任何教程都会有所帮助。

感谢您的时间。

PS:我假设我应该在ApplicationWillTerminate上保存?

2 个答案:

答案 0 :(得分:5)

编辑 - 我没有意识到你的问题说iOS。所以忽略我将字典保存到桌面的方式,但将NSDate保存为字符串的方法是相同的。

如果您更改保存NSDictionary的方式,则无需进入KeydArchiver。

NSDictionary

Key: 1999-08-13    //<----- Have this as a string in your dictionary. Not NSDate
Object: (Array)
   "Some string"
   "Some other string"

Key: 2000-08-13    //<------Have this as a string in your dictionary. Not NSDate
Object: (Array)
    "Some third string"

如果要将NSDictionary保存到文件中,可以这样做:

[MyDictionary writeToFile:@"/Users/yourUsername/Desktop/mySavedDictionary.plist" atomically:YES];

如果您想再次加载字典:

NSDictionary *myDictionary = [NSDictionary dictionaryWithContentsOfFile:@"/Users/yourUsername/Desktop/mySavedDictionary.plist"];

加载字典后,假设您想要在2000-08-13日期存储数据,那么您可以这样做:

首先我假设NSDate myPreviouslyDeclaredDate是您希望在字典中查找的日期,并且其格式为yyyy-MM-dd。您可以选择您想要的格式。使用AppleDocs作为指南。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSString *previouslyDeclaredDateInStringForm = [dateFormatter dateFromString:myPreviouslyDeclaredDate];
id objectNeededFromDictionary = [myDictionary objectForKey:previouslyDeclaredDateInStringForm];

答案 1 :(得分:1)

writeToFile仅适用于基本类型。我创建了一个新词典,其中键为NSStrings,然后使用writeToFile,我就完成了这项工作。很明显,我必须有一个方法,在从文件中读取时将字符串转换为我的原始密钥格式。