Filter entire NSDictionaries out of NSArray based on multiple keys

前端 未结 2 1421
情深已故
情深已故 2020-12-20 04:27

I have an NSArray of NSDictionary objects which I would like to be able to return a new array of NSDictionaries from, where every NSDictionary has \"Area == North\" (for exa

相关标签:
2条回答
  • 2020-12-20 04:45

    NSPredicate should work fine, I tried this:

    NSMutableArray *a = [NSMutableArray array];
    [a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"North", @"Area", @"North", @"Test", nil]];
    [a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"South", @"Area", @"North", @"Test", nil]];
    [a addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"East", @"Area", @"North", @"Test", nil]];
    NSPredicate *p = [NSPredicate predicateWithFormat:@"%K matches %@", @"Area", @"North"];
    NSArray *newArray = [a filteredArrayUsingPredicate:p];
    NSLog(@"newArray:%@", [newArray description]);
    

    It works.

    0 讨论(0)
  • 2020-12-20 05:02

    Sounds easy enough:

    NSArray *unfilteredDictionaries;  // however you get this...
    NSMutableArray *filteredDictionaries = 
      [NSMutableArray arrayWithCapacity:[unfilteredDictionaries count]];
    NSDictionary *dict;
    for (dict in unfilteredDictionaries)
       if ([[dict valueForKey:@"Area"] isEqualToString:@"North"])
         [filteredDictionaries addObject:dict];
    
    return filteredDictionaries;
    
    0 讨论(0)
提交回复
热议问题