2011-06-13 4 views
0

여기에는 이러한 유형의 질문이 많지만 실현 가능한 답변을 찾을 수 없었습니다.중첩 사전 - 개별 키 지정

간단히 말해서 선택한 카테고리 내의 모든 제품에 대한 가격 배열을 가져와야합니다. 나는이 같은 계층 구조 내에서 깊은 타겟으로하는 방법을 몰라

<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> 

:

여기 내 PLIST입니다. 여기 내 시도는 지금까지입니다 :

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 등 제품이

감사를 보여줍니다!

답변

4

currentDetail은 제품 1, 키, 당신은 배열에 키를 추가를 통해 NSDictionary 반복의 빠른 열거 이후 제품 2 등

을 보여줍니다. 따라서 귀하의 산출물은 제품 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

당신은 나에게 해결책을 보여준 것이 아니라 깊은 사전에 액세스하는 방법에 대해 많이 가르쳐 주셨습니다. 건배 동료, 당신의 생명의 은인! –

+0

당신은 오신 것을 환영합니다! 기꺼이 도와 드리겠습니다 :) – albertamg