NSPredicate, который является эквивалентом SQL КАК

Я ищу способ использовать NSPredicate установить a LIKE условие выбрать объекты. В дополнение к этому, OR было бы полезно также. Я пытаюсь сделать что-то, где, если пользователь ищет "James", я могу записать NSPredicate это сделает эквивалент:

select * from users where firstname LIKE '%James%' OR lastname LIKE '%James%';
50
задан Peter DeWeese 5 March 2012 в 15:33
поделиться

2 ответа

NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"(firstname CONTAINS[cd] %@) OR (lastname CONTAINS[cd] %@)", _mySearchKey, _mySearchKey];
120
ответ дан 7 November 2019 в 10:29
поделиться

Оператор CONTAINS, безусловно, будет работать отлично. Если вы ищете более прямую взаимосвязь, то можно также использовать оператор LIKE (* = 0 или более символов, ? = 1 символ):

NSString *_mySearchKey = @"James";
NSPredicate *_myPredicate = [NSPredicate predicateWithFormat:@"firstname LIKE '*%1$@*' OR lastname LIKE '*%1$@*'", _mySearchKey];

Для справки:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax. html#//apple_ref/doc/uid/TP40001795-215868

37
ответ дан 7 November 2019 в 10:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: