ошибки чтения plist - PullRequest
       8

ошибки чтения plist

0 голосов
/ 05 сентября 2011

У меня возникли проблемы с преобразованием моих данных из plist в объекты.

Структура plist имеет следующую структуру

structure of my plist

Я прочитал файл со следующим кодом

-(void)readAnimationsFromPlist
{
    NSDictionary *dict;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Animationen" ofType:@"plist"];
    dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    CCLOG(@"%@", [dict description]);
    for (NSDictionary *items in dict)
    {
        Animation *animation = [[Animation alloc] init];
        animation.name = items.description;
        CCLOG(@"%@", items);
        animation.delay = [items valueForKey:@"delay"]; //(1)
        animation.phases = [items valueForKey:@"phases"];
        CCLOG(@"Animation %@ mit %i frames eingelesen", items.description, animation.phases.count);
        [animationen setObject:animation forKey:animation.name];
        [animation release]; //(2)
    }
    [dict release];
    CCLOG(@"%i animationen eingelesen", [animationen count]);
 }

Моя проблема сейчас в том, что никакие данные не читаются в строке, отмеченной (1), всегда выдает следующее исключение.

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSCFString 0x55d3ba0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key delay.'

Я нашел некоторую информацию об этом сообщении, но ничегополезно.

  • Это не проблема привязки (не используется IB)
  • Когда я использую objectForKey, возникает другая ошибка

Когда я смотрю в инспекторокно при отладке показывает, что элементы имеют тип NSCFString со значением 'Hauptgewinn', но это должен быть словарь.Я попытался привести его явным образом к NSDictionary, но ничего не изменилось.

Что я могу сделать, чтобы решить эту проблему?

В позиции (2) я должен отпустить это или я могу удалитьэта строка?

1 Ответ

0 голосов
/ 05 сентября 2011

// 2 правильно.

-(void)readAnimationsFromPlist
{
    NSDictionary *dict;
    NSString *path = [[NSBundle mainBundle] pathForResource:@"untitled" ofType:@"plist"];
    dict = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"Dictionary is: %@", dict);
    for(id key in dict)
    {
        Animation *animation = [[Animation alloc] init];
        animation.name = key;
        CCLOG(@"%@", key);
        animation.delay = [[dict valueForKey:key] valueForKey:@"delay"]; //(1)
        animation.phases = [[dict valueForKey:key] valueForKey:@"phases"];
        CCLOG(@"Animation %@ mit %i frames eingelesen", items.description, animation.phases.count);
        [animationen setObject:animation forKey:animation.name];
        [animation release]; //(2)

    }
    [dict release];
}
...