嵌套字典 - 定位单个键

时间:2011-06-13 16:33:48

标签: objective-c nsarray nsdictionary

我很欣赏这里有很多这类问题,但我找不到可行的答案。

简单地说,我需要为所选类别中的所有产品获得一系列价格。

这是我的pList:

<key>Product Category</key>
    <dict>
        <key>Product 1</key>
        <dict>
            <key>Image</key>
            <string></string>
            <key>Large Image</key>
            <string></string>
            <key>Detail</key>
            <string></string>
            <key>Price</key>
            <integer>100</integer>
        </dict>
        <key>Product 2</key>
        <dict>
            <key>Image</key>
            <string></string>
            <key>Large Image</key>
            <string></string>
            <key>Detail</key>
            <string></string>
            <key>Price</key>
            <integer>200</integer>
        </dict>
    </dict>

我不知道如何在这样的层次结构中深入定位。这是我到目前为止的尝试:

NSString *detailPListPath = [[NSBundle mainBundle] pathForResource:@"detail" ofType:@"plist"];
NSDictionary *detailDictionary = [NSDictionary dictionaryWithContentsOfFile:detailPListPath];
currentDetail = [[NSMutableArray alloc] init];

for (id object in [detailDictionary objectForKey:indication]) {
    [currentDetail addObject:object];
}

但是currentDetail只显示了产品1,产品2等。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:4)

  

currentDetail就是这么展示的   产品1,产品2等。

由于NSDictionary的快速枚举遍历键,因此您将向数组添加键。因此,您的输出显示产品1,产品2等

  

我需要获得一系列价格   所选类别中的所有产品。

您需要使用这些键(产品1,产品2等)来检索关联的产品词典,然后检索与价格键相关联的值:

NSDictionary *detailDict = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"detail" ofType:@"plist"]];
NSDictionary *categoryDict = [detailDict objectForKey:@"Product Category"];
NSMutableArray *pricesArray = [NSMutableArray arrayWithCapacity:[categoryDict count]];
for (NSString *key in categoryDict) {
    [pricesArray addObject:[[categoryDict objectForKey:key] objectForKey:@"Price"]];
}

请注意,生成的pricesArray处于无特定顺序