2

我有一个 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 吗?

4

2 回答 2

4

编辑——我没有意识到你的问题是 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 的数据,那么您可以这样做:

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

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

NSString *previouslyDeclaredDateInStringForm = [dateFormatter dateFromString:myPreviouslyDeclaredDate];
id objectNeededFromDictionary = [myDictionary objectForKey:previouslyDeclaredDateInStringForm];
于 2013-08-13T11:18:24.777 回答
2

writeToFile仅适用于基本类型。一旦创建了一个新字典,键所在的位置NSStrings然后使用writeToFile. 很明显,在从文件中读取时,我必须有一种方法将字符串转换为我的原始密钥格式。

于 2013-08-12T21:24:19.697 回答