这是我的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;
};
}
我想要做的只是获取国家,你可以告诉我有两个“美国”的价值观。我只想推断美国和马来西亚。而不是美国,马来西亚,美国。
我希望我有意义
答案 0 :(得分:4)
我认为最简单的方法是:
[NSSet setWithArray:[[dictionary allValues] valueForKey:@"country"]];
所以你:
valueForKey:
- 定义为依次对数组中的所有内容调用valueForKey:
,然后返回答案数组,并在字典上valueForKey:
为与objectForKey:
相同,如果有问题的密钥不是“@”; 如果您希望以数组结尾,可以在结果集上添加对allObjects
的调用。
答案 1 :(得分:1)
假设您有一个名为locations的词典,并且词典中的一个对象是一个国家/地区。另外你说只是推断我会假设你想把它添加到某个数组或其他东西。对于此问题,您可以使用一组来确保您不会再次进入同一个国家/地区。
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
}
答案 2 :(得分: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];
}
}