NSKeyedUnarchiver decodeObjectForKey, возвращающий нулевой класс - PullRequest
0 голосов
/ 13 января 2012

У меня есть архив, который хранится в файле «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"];

По какой-то причине он возвращает нулевой класс вместо моего ожидаемого класса NSArray.Может кто-нибудь сказать мне причину, по которой это происходит, и как я могу решить эту дилемму?

Я получаю урок, как это ...

Ответы [ 3 ]

1 голос
/ 02 мая 2013

У меня была такая же проблема, Метод 2 помог мне.

Измените "BIDPresident" на "President" в Presidents.plist с помощью TextWrangler или попробуйте мой файл http://www.fileswap.com/dl/o29Sxm48g0/Presidents.plist.html

0 голосов
/ 08 марта 2012

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

0 голосов
/ 13 января 2012

Вы можете получить доступ к объекту:

    NSMutableDictionary dict = [NSKeyedUnarchiver unarchiveObjectWithFile:archieverPath];

archieverPath - путь к списку. и вы можете вернуть объект по

return [dict objectForKey:key];
...