2012-01-13 2 views
0

У меня есть архив, который хранится в файле "Presidents.plist". Он существует, и я могу найти его, используя метод pathForResource. А также я получаю данные с использованием метода initWithContentsOfFileNSData для извлечения данных. Проблема теперь в этих строках кода.NSKeyedUnarchiver decodeObjectForKey, возвращающий нулевой класс

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

чувак !, ты чувак право? Я сделал это 'NSMutableDictionary dict = [unarchiver decodeObjectForKey: @" Президенты "];' и выполнил его. Вывод: 'dict = (null)'; С другой стороны, содержимое plist представляет собой массив. Но тогда он также возвращает null. – jovhenni19

+0

Я обновил вопрос. Пожалуйста, взгляните на него! Спасибо! – jovhenni19

0

В более поздних версиях прошивки корневого объект Plist не должен быть массивом. У меня была эта проблема в последнее время. Вместо этого попробуйте использовать словарь.

 Смежные вопросы

  • Нет связанных вопросов^_^