У меня есть NSArray
пользовательских объектов, все из которых имеют @property name
типа NSString
. Как я могу быстро перечислить массив и создать новый массив, который содержит только те объекты, у которых есть определенное слово в свойстве name
?Быстрый поиск объектов в NSArray
Например:
CustomObject *firstObject = [[CustomObject alloc] init];
firstObject.name = @"dog";
CustomObject *secondObject = [[CustomObject alloc] init];
secondObject.name = @"cat";
CustomObject *thirdObject = [[CustomObject alloc] init];
thirdObject.name = @"dogs are fun";
NSMutableArray *testArray = [NSMutableArray arrayWithObjects:firstObject,
secondObject,
thirdObject,
nil];
// I want to create a new array that contains all objects that have the word
// "dog" in their name property.
Я знаю, что я мог бы использовать цикл, как так:
NSMutableArray *newArray = [NSMutableArray array];
for (CustomObject *obj in testArray)
{
if ([obj.name rangeOfString:@"dog"].location == NSNotFound) {
//string wasn't found
}
else {
[newArray addObject:obj];
}
}
Но есть более эффективный способ? Благодаря!
Я не знаю, каков будет синтаксис, но не следует ли проверять предикат для SELF.name вместо САМ? –
@DrummerB Это не сработает, потому что testArray содержит объекты, а не строки. Я хочу искать слово в свойстве объекта, а не в самом объекте. – Anthony
Право, извините, исправлено. – DrummerB