Почему не работает этот 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];
должно сработать