Objective-C奇怪的字典行为

时间:2011-06-02 19:32:00

标签: objective-c plist nsdictionary

我有一个非常简单的plist,它被加载到NSDictionary中。但是,当我尝试访问特定值时,没有可用的数据。

这就是我的plist的结构:

编辑* 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"];

(我删除了我访问key = 1条目的行)

当我检查gdb中的“meta”字典和“assets”字典时,“meta”包含所需的条目。但是,资产总是零。我真的迷失在这里..任何想法为什么?我在我的代码中的其他位置使用这种方法从plists加载数据,这从来就不是问题。

1 个答案:

答案 0 :(得分:3)

乍一看,你看起来像是在层次结构中的一层。 “sd”不是“元”字典中的关键字,它是“1”字典中的关键字。试试这个:

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

另请注意,您应该使用-objectForKey:进行字典访问(-valueForKey:可能会在此上下文中起作用,但它属于键值编码机制,这有点不同。)

(另外,不确定这只是一个粘贴问题,但你的plist看起来不完整。)