1

以下の辞書があり、特定の国のすべての都市にアクセスしたいと考えています。したがって、下で USA を選択すると、ダラス、ヒューストンにアクセスしたいと思います。たとえば、次の機能を念頭に置いていますが、国のすべての都市を取得する方法がわかりません。

-(NSArray*) fetchCitiesFromLocationDictionary:(NSMutableDictionary *)locationDictionary usingCountry:(NSString *)country
{


}


{
    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

1

次のようなものを試してください。

NSDictionary *dictionary = [NSDictionary dictionary];
NSMutableArray *cities = [NSMutableArray array];
for (NSDictionary *individualDictionary in dictionary)
{
    if ([[individualDictionary objectForKey:@"country"] isEqualToString:@"USA"])
        [cities addObject:[individualDictionary objectForKey:@"name"]];
}
于 2012-11-13T19:55:01.180 に答える
1

私がこれを読んでいる方法では、( を使用してNSDictionary.allValues) 値を反復処理し、value.country=USA の場合は、value.name を戻りリスト (NSMutableArray) に追加します。

于 2012-11-13T19:53:47.207 に答える
1

両方の答えは良いですが、より優れたものを提案します(IMO :D)

1行

id matches = [[dictOfDicts allValues] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"country=='USA'"]];

実施例

int main(int argc, char *argv[]) {
    @autoreleasepool {
        id dictOfDicts = @{@"1":@{@"country":@"USA", @"name":@"test"}, @"2":@{@"country":@"azUSA", @"name":@"test"}, @"3":@{@"country":@"USA", @"name":@"test"}, @"4":@{@"country":@"adsaUSA", @"name":@"test"}};

        NSLog(@"%@", [[dictOfDicts allValues] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"country=='USA'"]]);
    }
}
于 2012-11-13T20:22:17.223 に答える