Как фильтровать объекты в NSArray по свойству объекта

#objective-c #xcode #nsmutablearray #nsdictionary

#objective-c #xcode #nsmutablearray #nsdictionary

Вопрос:

У меня есть объект под названием MyObject с двумя свойствами MyObject.name, MyObject.ID У меня также есть объект NSMutableArray MyObjects для хранения экземпляров объектов MyObject.

Теперь я хочу отфильтровать все экземпляры, которые MyObject.name содержать символ @»a» в MyObjects, как я могу это сделать? Я пробую методы NSDictionary и NSPredicate, но все они завершились неудачей.

У вас есть какие-нибудь идеи? Большое спасибо ~

Ответ №1:

Есть много способов сделать это, но вот идея, которая пришла мне в голову. Вы могли бы перебирать все объекты в массиве MyObjects NSMutable, а затем написать логику для поиска @»a» в каждом MyObject.name а затем сохраните те, которые не содержат @»a», в новом массиве.

 // note using ARC
NSMutableArray *myFilteredObjects = [[NSMutableArray alloc] init];
for(MyObject *myObject in MyObjects)
{
    NSRange *range = [myObject.name rangeOfString:@"a"];

    if(range.location == NSNotFound)
    {
        // add object to new array if it doesn't contain @"a"
        [myFilteredObjects addObject: myObject];
    }
}

// do what you want with filtered objects array