2012-04-17 7 views
1

Я использую следующий код для фильтрации массива с использованием предиката.NSPredicate Filtering со специальными символами

self.aPredicateString = [self.aPredicateString stringByAppendingString:[NSString stringWithFormat:@"%@ contains[cd] '%@'", self.selectedSearchParameter, self.searchString]]; 


NSLog(@"Predicate string %@",self.aPredicateString); 
     self.aPredicate = [NSPredicate predicateWithFormat:self.aPredicateString]; 

Если пользователь вводит либо \ или ' код вылетает с ошибкой.

Я не понимаю, в чем ошибка? Либо специальные символы не разрешены в NSPredicate, либо я должен форматировать предикат по-разному.

+0

Я не думаю, что вы должны иметь одинарные кавычки вокруг% @, потому что это превращает его в литерал – rdelmar

+0

Не могли бы вы предоставить отчет о сбое? –

ответ

6

Интересно, почему вы используете весь этот self.aPredicateString stringByAppendingString, но я думаю, ваш предикат должен выглядеть следующим образом:

self.aPredicate = [NSPredicate predicateWithFormat:@"%@ contains[cd] %@", self.selectedSearchParameter, self.searchString]]; 

, не '' вокруг %@

+0

self.aPredicateString = [self.aPredicateString stringByAppendingString: [NSString stringWithFormat: @ "И% @ содержит [cd] '% @'", self.selectedSearchParameter, self.searchString]]; Фактическое выражение, которое я использую, выглядит следующим образом. Мне нужно добавить строку к существующей строке и сформировать предикат. До AND в заявлении есть еще одно условие предиката, которое я использую. – steja

+1

Я даже пробовал без кавычек. Даже это нарушило приложение. @ Rdelmar – steja

+0

Вы нашли решение? – Chuck