2

这是我拥有的 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;
    };
}

我想要做的是获取国家,正如你所知道的,我对“美国”有两个值。我只想推断美国和马来西亚。而不是美国,马来西亚,美国。

我希望我说得通

4

3 回答 3

4

我认为最简单的方法是:

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

那么你:

  1. 获取顶级字典中所有值的数组;
  2. 调用valueForKey:该数组——它被定义为valueForKey:依次调用数组中的所有内容,然后返回一个答案数组,并且valueForKey:在字典上与所objectForKey:讨论的键不带有“@”相同;
  3. 从结果数组创建一个集合,从而解决任何重复。

allObjects如果你想得到一个数组,你可以在结果集上添加一个调用。

于 2012-11-12T03:20:21.620 回答
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
}
于 2012-11-12T03:15:27.340 回答
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];
    }
}
于 2012-11-12T03:19:35.237 回答