使用NSKeyedUnarchiver将数据加载到plist

时间:2011-05-13 10:15:08

标签: iphone objective-c

我构建了一个将数据保存到plist的应用程序,我使用下面的代码:

self.emaillist = [[NSMutableArray alloc]init ];
NSString *path = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [path stringByAppendingPathComponent:@"Email.plist"];


self.emaillist = [NSKeyedUnarchiver unarchiveObjectWithFile:finalPath];

当应用程序到达最后一行时,它就崩溃了。

3 个答案:

答案 0 :(得分:0)

您需要使用NSKeyedArchiver而不是unarchiver来将数据保存到文件中。

答案 1 :(得分:0)

您的路径似乎不太可能正确。我假设您的Plist在应用程序的资源中?在这种情况下,它的路径是:

[[NSBundle mainBundle] pathForResource:@"Email" ofType:@"plist"]

答案 2 :(得分:0)

NSBundle有方便的方法来查找资源的路径,如下所示:

NSString* path = [[NSBundle mainBundle] pathForResource:@"Email" 
                                                 ofType:@"plist"];

使用此路径,您还可以使用便捷方法来提取属性列表。如果您知道plist的根是一个数组,那么只需使用:

NSArray* plist = [NSArray arrayWithContentsOfFile:path];
self.emails = [NSMutableArray arrayWithArray:plist];

字典和字符串存在等效方法。