如何在磁盘上保存2个NSMutableDictionary

时间:2014-06-17 12:54:16

标签: ios objective-c xcode

开发在Xcode for iOS中。我使用了2个单独的NSmutabledictionary。

我不想添加它们(搜索时我经常发现,但这不是我试图做的)

应用程序必须将它们存储在磁盘上,当应用程序启动时,它可以读取字典。 它不是自定义类,因此initWithCoder而另一个不是必需的(这是对的吗?)

NSArray *data = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [data objectAtIndex:0];
path = [path stringByAppendingPathComponent:@"location"];
[NSKeyedArchiver archiveRootObject:"Dictionary" toFile:path];

这样可行,但是当我想保存另一个字典时,它将无法正常工作。我的第一个想法是将objectAtIndex更改为1.但是当我这样做时,Xcode给了我一个错误。当我只给出另一个名字时,它根本不会保存,但Xcode不会出错。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

// Find out where the documents folder is
NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
// Create the file path for a file named 'location' inside the documents folder
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"location"];

// Write an array containing both of your arrays to a file at that path
[NSKeyedArchiver archiveRootObject:@[myFirstArray, mySecondArray] toFile:path];

然后,读回来:

// Read back the array containing the two arrays
NSArray *arrays = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

// Get the individual arrays from the array
NSMutableArray *myFirstArray = arrays[0];
NSMutableArray *mySecondArray = arrays[1];