Search code examples
iphoneobjective-cnsarraynspredicatensset

How to search an NSSet or NSArray for an object which has an specific value for an specific property?


How to search an NSSet or NSArray for an object which has an specific value for an specific property?

Example: I have an NSSet with 20 objects, and every object has an type property. I want to get the first object which has [theObject.type isEqualToString:@"standard"].

I remember that it was possible to use predicates somehow for this kind of stuff, right?


Solution

  • NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@", @"standard"];
    NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate];
    id firstFoundObject = nil;
    firstFoundObject =  filteredArray.count > 0 ? filteredArray.firstObject : nil;
    

    NB: The notion of the first found object in an NSSet makes no sense since the order of the objects in a set is undefined.