我有一个非常简单的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加载数据,这从来就不是问题。
答案 0 :(得分:3)
乍一看,你看起来像是在层次结构中的一层。 “sd”不是“元”字典中的关键字,它是“1”字典中的关键字。试试这个:
NSDictionary *meta = [metaPlistData objectForKey:@"meta"];
NSDictionary *one = [meta objectForKey:@"1"];
NSDictionary *assets = [one objectForKey:@"sd"];
另请注意,您应该使用-objectForKey:
进行字典访问(-valueForKey:
可能会在此上下文中起作用,但它属于键值编码机制,这有点不同。)
(另外,不确定这只是一个粘贴问题,但你的plist看起来不完整。)