Objective-C странный список поведения словаря - PullRequest
0 голосов
/ 02 июня 2011

У меня действительно простой plist, который загружается в NSDictionary.Однако, когда я пытаюсь получить доступ к определенному значению, никакие данные не доступны.

Вот как структурирован мой plist:

edit * xml испортился.Вы можете взглянуть на это на pastebin: http://pastebin.com/C419ZVeJ

Здесь я загружаю plist:

NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
NSString *finalPath = [bundlePath stringByAppendingPathComponent:@"Test.plist"];
NSDictionary *metaPlistData = [NSDictionary dictionaryWithContentsOfFile:finalPath];


NSDictionary *meta = [metaPlistData valueForKey:@"meta"];
NSDictionary *assets = [meta valueForKey:@"sd"];

(я удалил строку, где я получаю доступ к ключу = 1 запись)

Когда я проверяю словарь "meta" и словарь "assets" в gdb, "meta" содержит необходимые записи.Однако активы всегда равны нулю.Я действительно потерян здесь .. есть идеи, почему?Я загружаю данные из списков, используя этот подход, в других местах моего кода, и это никогда не было проблемой.

1 Ответ

3 голосов
/ 02 июня 2011

На первый взгляд кажется, что вы отключены на один слой в иерархии. «sd» не является ключом в словаре «meta», это ключ в словаре «1». Попробуйте это:

NSDictionary *meta = [metaPlistData objectForKey:@"meta"];
NSDictionary *one = [meta objectForKey:@"1"];
NSDictionary *assets = [one objectForKey:@"sd"];

Обратите внимание, что вы должны использовать -objectForKey: для доступа к словарю (-valueForKey:, вероятно, будет работать в этом контексте, но это относится к механизму кодирования ключ-значение, который немного отличается.)

(Кроме того, не уверен, что это просто проблема с вставкой, но ваш список выглядит неполным.)

...