Почему не работает этот NSP-предикат?

У меня есть очень простой 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 ответ

Решение

Проверьте документацию здесь

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

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

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

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

Другие вопросы по тегам