можно ли проверить условие на основе выражения, цель c

Мои массивы arroriginally содержат следующие

[A,B,C,D,E,F,G];

Теперь я хочу удалить A, B и C, и я мог бы сделать это следующим образом.

 [arr enumerateObjectsUsingBlock:^(NSString *name, NSUInteger idx, BOOL *stop) {
    if ( [name isEqualToString:@"A"] || [name isEqualToString:@"B"] || [name isEqualToString:@"C"]);
         [arr removeObject:name];
}];

Вопрос: можно ли это сделать с помощью nsexpression. Звучит так, как если бы выражение nsexpression содержало A, B и C, а затем мы удаляли бы элементы на основе выражения nxpression.

Любые идеи, как этого добиться. Здесь приветствуются все комментарии. Спасибо.


person tranvutuan    schedule 03.04.2014    source источник


Ответы (1)


Вместо прямого использования NSExpression рассмотрите filteredArrayUsingPredicate: или, для NSMutableArray, filterUsingPredicate:. Это либо вернет новый массив, отфильтрованный предикатом, либо тот же массив, видоизмененный в соответствии с предикатом.

Кроме того, не очень хорошая идея изменять вашу коллекцию во время перечисления.

person Jody Hagins    schedule 03.04.2014