2012-01-13 61 views
0

我有一个档案存储在“Presidents.plist”文件中。它存在,我可以使用pathForResource方法找到它。而且我确实使用initWithContentsOfFile方法NSData获取数据来检索数据。现在的问题是在这行代码中。NSKeyedUnarchiver decodeObjectForKey返回null类

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"]; 

出于某种原因,它返回一个空类而不是我预期的NSArray类。任何人都可以告诉我发生这种情况的原因,我该如何解决这个困境?

我越来越喜欢这个类...

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

回答

0

您可以通过访问对象:

NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath]; 

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

return [dict objectForKey:key]; 
+0

花花公子改变“BIDPresident”的“总统”在Presidents.plist!你是一个花花公子吗?我做了这个'NSMutableDictionary dict = [unarchiver decodeObjectForKey:@“Presidents”];'并注销了它。输出是'dict =(null)';另一方面,plist的内容是一个数组。但是它也返回null。 – jovhenni19 2012-01-13 07:43:10

+0

我更新了问题..请看看它!谢谢! – jovhenni19 2012-01-13 09:51:10

0

返回对象在较新版本的iOS的plist的根对象不能是一个数组。我最近有这个问题。尝试使用字典来代替。