Как искать NSSet или NSArray для объекта, который имеет определенное значение для определенного свойства?
Пример: у Меня есть NSSet с 20 объектами, и каждый объект имеет type
свойство. Я хочу получить первый объект, который имеет [theObject.type isEqualToString:@"standard"]
.
Я помню, что было возможно использовать предикаты так или иначе для этого вида материала, правильно?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type == %@", @"standard"];
NSArray *filteredArray = [myArray filteredArrayUsingPredicate:predicate];
id firstFoundObject = nil;
firstFoundObject = filteredArray.count > 0 ? filteredArray.firstObject : nil;
NB: Понятие первого найденного объекта в NSSet не имеет смысла, поскольку порядок объектов в наборе не определен.
NSArray* results = [theFullArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF.type LIKE[cd] %@", @"standard"]];
Вы можете получить фильтрованный массив, как описали Джейсон и Оле, но поскольку вам нужен только один объект, я бы использовал - indexOfObjectPassingTest:
(если он находится в массиве) или -objectPassingTest:
(если он находится в наборе) и не создавал второй массив.