需要帮助从plist创建字典

时间:2011-10-16 06:25:07

标签: iphone objective-c cocoa-touch nsarray nsdictionary

我的plist中有以下格式:

enter image description here

我正在使用这个代码,它可以正常拉取所有muscleName并将它们设置为表格的单元格textLabel:

    NSString *path = [[NSBundle mainBundle]pathForResource:@"data" ofType:@"plist"];
    NSMutableArray *rootLevel = [[NSMutableArray alloc]initWithContentsOfFile:path];
    self.muscleArray = rootLevel;
    cell.textLabel.text = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"muscleName"];

但现在我正在添加搜索栏,我希望结果显示exerciseName以及相应的muscleNamemusclePicture键。

我尝试过[[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exerciseName"];但是没有取任何东西

1 个答案:

答案 0 :(得分:1)

[[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exercises"] 

将为您提供一个NSArray,其中包含两个词典(来自上面的数据),每个词典都包含一个键exerciseName的字符串。你也可以

[[[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exercises"] valueForKey:@"exerciseName"]

将返回NSAtrray NSAtrray,其中包含两个练习名称。

您的数据并未真正以便于搜索的方式进行布局。您正在尝试在包含在数组中包含的字典中的数组中包含的字典中进行搜索!为搜索目的创建一个替代数组可能是值得的 - 可以这样做:

NSMutableArray *arrayForSearching = [NSMutableArray array];
for (NSDictionary *muscleDict in self.muscleArray)
    for (NSDictionary *excerciseDict in [muscleDict objectForKey:@"exercises"])
        [arrayForSearching addObject:[NSDictionary dictionaryWithValuesAndKeys:
            [exerciseDict objectForKey:@"exerciseName"],@"exerciseName",
            [muscleDict objectForKey:@"muscleName"],@"muscleName",nil]];

(输入浏览器并未经测试,请原谅任何错误!)