在iOS中,是否可能将NSMutableArray或NSDictionary数据保存为文件?

19

我想将一个NSMutableArray或者NSDictionary保存为永久文件,以便稍后重新打开。

这是否可行?如果可以,如何实现?

2个回答

52

写入文件

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];
[myArray writeToFile:filePath atomically:YES];

从文件读取

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:FILE_NAME];
myArray = [NSArray arrayWithContentsOfFile:filePath];

如果文件不存在,myArray将为空。NSDictionary有类似的方法。请查看参考文献以获取这些方法的详细信息。


4
@gef,TRUE/FALSE和YES/NO之间有实际区别吗? - taskinoor
2
@taskinoor 你好,FILE_NAME应该如何格式化?你能给我一个可以使用的文件名示例吗? - Bazinga
我找不到文件保存的路径。能帮忙吗? - yabtzey
@Superman,举个例子,我正在保存一个NSDictionary,并将文件路径“/Documents”与“loginDictionary.plist”连接起来。希望这有所帮助。 - Joel Balmer
另外,@YugeshShrestha,我刚才说的可能有所帮助,但不确定。祝你好运! - Joel Balmer
显示剩余6条评论

2
也许你可以将一个字典转换成JSON数据,并将其写入文件中。
NSDictionary *dict = /* the NSDictionary/NSArray you need to write */

NSError *writeError = nil;
NSData* data;
data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&writeError];

if (!writeError) {
    [data writeToFile:filePath atomically:YES];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接