Ответ 1
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
Я ищу способ использовать NSPredicate
для установки условия LIKE
для извлечения объектов. Кроме того, было бы полезно использовать OR
. Я пытаюсь что-то сделать, если пользователь ищет "Джеймс", я могу написать NSPredicate
, который будет выполнять эквивалент:
select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
Оператор CONTAINS
, безусловно, будет работать нормально. Если вы ищете более прямую корреляцию, вы также можете использовать оператор LIKE (*
= 0 или более символов, ?
= 1 символ):
NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%[email protected]*' OR lastname LIKE '*%[email protected]*'", _mySearchKey];
Другая возможность
@"firstname beginswith[c] James"
Как хорошая альтернатива содержит
Иногда содержит не всегда правильный ответ