2011-06-13 84 views
0

我很欣賞這裏有很多這類問題,但我一直無法找到一個可行的答案。嵌套字典 - 針對個人密鑰

簡而言之,我需要獲得所選類別中所有產品的價格數組。

這裏是我的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等

感謝您可以提供任何幫助!

回答

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沒有具體的訂單

+0

你不只是告訴我一個解決方案,你教我很多關於如何訪問深層字典。乾杯隊友,你的救星! – 2011-06-14 09:05:38

+0

歡迎您!我很樂意幫助:) – albertamg 2011-06-14 09:18:29