从plist获取nsdictionary

时间:2012-01-08 05:19:58

标签: iphone

我创建了一个plist,结构如下:

Root - NSDictionary
  firstName - NSArray
  lastName - NSArray

收到字典后,我不确定如何访问这些数据。当我记录字典的内容时,就像这样

NSDictionary *presetsDict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
self.presetsDictionary = presetsDict;
for (NSString *key in self.presetsDictionary) {
    NSLog(@"key:%@, object:%@", key, [self.presetsDictionary objectForKey:key]);

我得到了

key:Root, object: {
lastName = (my lastName array, , , , ) // filled with the contents of my plist
firstName - (my firstName array, , , ,)

我假设我能够使用

之类的东西获取lastName数组和firstName数组
NSArray *fArray = [self.presetsDictionary objectForKey:@"firstName"];

但是返回零。如何在plist中访问我的NSDictionary?感谢。

2 个答案:

答案 0 :(得分:4)

您的顶级对象看起来像是一个字典,其中包含一个名为 Root 的键,其中包含您的核心字典(其中 firstName lastName 密钥直播)。因此,要访问它,您必须首先浏览 Root 键入的对象。您可以获取该字典然后访问其密钥,或使用包含 Root 密钥的密钥路径:

// Accessing through the Root entry
NSDictionary* rootDict = [[self presetsDictionary] objectForKey:@"Root"];
NSArray* firstNames = [rootDict objectForKey:@"firstName"];
NSArray* lastNames  = [rootDict objectForKey:@"lastName"];

// Accessing using the keypath with Root
NSArray* firstNames = [[self presetsDictionary] valueForKeyPath:@"Root.firstName"];
NSArray* lastNames  = [[self presetsDictionary] valueForKeyPath:@"Root.lastName"];

答案 1 :(得分:0)

看起来您需要执行以下操作: NSArray * fArray = [self.presetsDictionary valueForKeyPath:@“Root.firstName”];

换句话说,看起来你有嵌套字典,基本字典中唯一的条目是一个Key,Root,其他数据是相关的值。