IOS-正在将NSDictionary保存到磁盘



我有一个NSDictionary,它包含一组具有键的NSDates的数组,每个数组都包含可变数量的NSStrings

类似这样的东西:

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

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

如果是这样的话,任何关于这个主题的教程都会很有帮助。

谢谢你抽出时间。

PS:我想我应该在ApplicationWillTerminate上保存?

编辑——我没意识到你的问题说的是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];

writeToFile仅适用于基本类型。我曾经做过一次,创建了一个关键字为NSStrings的新字典,然后使用writeToFile。很明显,当从文件中读取时,我必须有一个方法将字符串转换为我的原始密钥格式。

最新更新