2012-01-08 63 views
0

得到的NSDictionary我创建了一个plist中,结构是这样的:从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, , , ,) 

我的假设,我将能够获得姓氏阵列和firstName阵列像

NSArray *fArray = [self.presetsDictionary objectForKey:@"firstName"]; 

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

回答

4

它看起来像你的顶级对象是一个名为其中包含你的核心字典(其中您的firstNamelastName的键住)一个关键的字典。所以,要访问它,你必须首先通过。您可以得到那本字典,然后访问它的键,或者使用的keyPath包含键:

// 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"]; 
0

它看起来像你需要做的是这样的: 的NSArray * fArray = [self.presetsDictionary valueForKeyPath:@ “Root.firstName”];

换句话说,它看起来像你嵌套字典,并在基地字典的唯一入口是一个关键,根,与其他数据是关联的值。