2016-08-05 3 views
0
NSArray *arrValues = [NSArray arrayWithObjects:@"ABCD",@"ABCE",@"CDE"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd]%@",@"ABC"];  
NSArray *arrFiltered = [arrValues filteredArrayUsingPredicate:predicate]; 

Я знаю, что arrFiltered будет содержать результат ABCD и ABCE.Обратные значения с использованием NSPredicate IOS

Но, я хочу, чтобы результат был CDE.

Есть ли способ найти инверсию указанного предиката. то есть.,! (ABC)

ответ

1

попробовать

[NSPredicate predicateWithFormat:@"SELF !=[c] %@",@"ABC"]; 

[c] делает сравнение равенства регистра.

Вариант-2

NSArray *arrValues = [NSArray arrayWithObjects:@"ABCD",@"ABCE",@"CDE",nil]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF CONTAINS %@)",@"ABC"]; 
    NSArray *arrFiltered = [arrValues filteredArrayUsingPredicate:predicate]; 

вы получите выход в

enter image description here

2

Попробуйте использовать NOT с предикатом

NSArray *arrValues = [NSArray arrayWithObjects:@"ABCD",@"ABCE",@"CDE"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (SELF CONTAINS[cd] %@"),@"ABC"];  
NSArray *arrFiltered = [arrValues filteredArrayUsingPredicate:predicate]; 
+0

ошибка кода 'reason: 'Невозможно проанализировать строку формата" SELF NOT CONTAINS [cd]% @ "'' –

+0

проверить один раз перед повторным ответом, когда ваш код поврежден 'Завершение приложения из-за неперехваченного исключения 'NSInvalidArgumentException', reason: ' Не удалось проанализировать строку формата «NOT (CONTAINS% @)» «» –

+0

Уже исправлено. –

Смежные вопросы