Почему не работает этот NSP-предикат? - PullRequest
2 голосов
/ 28 июня 2010

У меня есть очень простой NSPredicate как таковой:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith '%@'", theString];
[matchingTags filterUsingPredicate:sPredicate];

В результате массив получает 0 результатов, когда theString == "p"

Однако, когда я делаю это:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith 'p'"];
[matchingTags filterUsingPredicate:sPredicate];

Я получаю более 100 результатов, как и ожидалось.

Я проверил «theString» с помощью NSLog (), и его значение верное.Я чувствую, что упускаю какой-то важный секрет.Возможно, потому что я использую строку, а не символ?

Мысли?

1 Ответ

4 голосов
/ 28 июня 2010

Ознакомьтесь с документацией здесь

Если вы используете подстановку переменных, используя % @ (например, firstName как% @), кавычки добавлены для вас автоматически.

Так что, в основном, он ищет имена, которые начинаются с "p" вместо p. Изменение вашего кода на:

NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"name beginswith %@", theString];

должно работать

...