NSPredicate与SQL的LIKE等价
我正在寻找一种方法来使用NSPredicate
来设置LIKE
条件来获取对象。 除此之外,一个OR
也是有用的。 我试图做一些事情,如果用户search“詹姆斯”,我可以写一个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 '*%1$@*' OR lastname LIKE '*%1$@*'", _mySearchKey];
另一种可能性
@"firstname beginswith[c] James"
作为一个很好的替代包含
有时包含并不总是正确的答案