2012-01-13 30 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的根對象不能是一個數組。我最近有這個問題。嘗試使用字典來代替。