2012-11-12 72 views
1

這是我的NSDictionary有:如何在NSDictionary中獲得唯一鍵?

locations: { 
    509f3a914d026b589ba3a090 =  { 
     coordinates =   { 
      latitude = "29.76429"; 
      longitude = "-95.3837"; 
     }; 
     country = USA; 
     id = 509f3a914d026b589ba3a090; 
     name = Houston; 
     state = Texas; 
    }; 
    509f3b3a4d026b589ba3a091 =  { 
     coordinates =   { 
      latitude = "3.138722"; 
      longitude = "101.686849"; 
     }; 
     country = Malaysia; 
     id = 509f3b3a4d026b589ba3a091; 
     name = "Kuala Lumpur"; 
    }; 
    509f475b4d026b589ba3a093 =  { 
     coordinates =   { 
      latitude = "32.803468"; 
      longitude = "-96.769879"; 
     }; 
     country = USA; 
     id = 509f475b4d026b589ba3a093; 
     name = Dallas; 
     state = Texas; 
    }; 
} 

我所想要做的是剛剛拿到的國家和你能告訴我有兩個值「USA」。我只是想推斷美國和馬來西亞。而不是美國,馬來西亞,美國。

我希望我做的意義

+0

所以你不想讀第一國後的任何其他字典? –

回答

3

我認爲最簡單的方法是:

[NSSet setWithArray:[[dictionary allValues] valueForKey:@"country"]]; 

所以你:

  1. 得到所有值的數組在頂級字典中;
  2. 呼叫valueForKey:該陣列上 - 這被定義爲來電valueForKey:的一切又在數組中,然後返回答案的數組,並valueForKey:在一本字典是一樣的objectForKey:如果有問題的關鍵不存在與 '@';
  3. 從結果數組中創建一個集合,從而解決任何重複問題。

如果您想要結束數組,則可以在結果集上添加對allObjects的調用。

1

假設你有一個叫字典位置和在你的字典中的對象之一是一個國家。你也只是說外推我會假設你想把它添加到一些數組或其他東西。對於這個問題,你可以使用一套來確保你不再進入同一個國家。

NSMutableSet *set = [NSMutableSet set]; 
NSMutableArray *array = [NSMutableArray array]; 

NSString *country = [locations objectForKey:@"country"]; 
if ([set containsObject:country]) 
{ 
    [array addObject:country]; // Extrapolating country from dictionary to array 
    [set addObject:country]; // Addind it to set to check later 
} 
1

我會做這樣的:

NSMutableArray *newArray = [NSMutableArray array]; 
NSMutableSet *currentCountries = [NSMutableSet set]; 
for(NSDictionary* dic in [[currentDict objectForKey:@"locations"] allValues]) 
{ 
    if(![currentCountries containsObject:[dic objectForKey:@"country"]) 
    { 
     [currentCountries addObject:[dic objectForKey:@"country"]] 
     [newArray addObject:dic]; 
    } 
} 
相關問題