NSKeyedUnarchiver decodeObjectForKey返回null类

时间:2012-01-13 07:29:25

标签: iphone nskeyedarchiver

我有一个存档,存储在“Presidents.plist”文件中。它存在,我可以使用pathForResource方法找到它。我还使用initWithContentsOfFile NSData方法获取数据来检索数据。现在的问题出在这行代码中。

NSString *path = [[NSBundle mainBundle] pathForResource:@"Presidents"
                                                 ofType:@"plist"];
NSData *data; 
NSKeyedUnarchiver *unarchiver;
data = [[NSData alloc] initWithContentsOfFile:path];
unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
id presidents = [unarchiver decodeObjectForKey:@"Presidents"];

由于某种原因,它返回一个null类而不是我期望的NSArray类。任何人都可以告诉我这种情况发生的原因,我该如何解决这个难题?

我正在上课......

NSLog(@"presidents class = %@", NSStringFromClass([presidents class]));

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,Method 2帮了我。

使用TextWrangler将“BIDPresident”更改为Presidents.plist中的“President”或尝试我的文件http://www.fileswap.com/dl/o29Sxm48g0/Presidents.plist.html

答案 1 :(得分:0)

您可以通过以下方式访问该对象:

    NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath];

archieverPath是plist的路径。 你可以通过

返回对象
return [dict objectForKey:key];

答案 2 :(得分:0)

在iOS的更新版本中,pList的根对象不能是数组。我最近遇到了这个问题。请尝试使用字典。