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]; 

以供参考:
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-215868

另一种可能性

 @"firstname beginswith[c] James" 

作为一个很好的替代包含

有时包含并不总是正确的答案