在使用过程中有这么一个需求,需要剔除实体某个属性的值不包含某个字符串,查资料后代码如下:
request.predicate= [NSPredicate predicateWithFormat:@"!(sessionId CONTAINS[cd] %@)",@"nice"];
如上:sessionId这个属性不包含nice这个字符串。
NSPredicate字符串比较的其他语法:
1、BEGINSWITH:左边的表达式以右边的表达式作为开始。
(例:request.predicate= [NSPredicate predicateWithFormat:@"(属性 BEGINSWITH[cd] %@)",@"开头的字符串"];)
2、CONTAINS:左边的表达式包含右边的表达式。
(例:request.predicate= [NSPredicate predicateWithFormat:@"(属性 CONTAINS[cd] %@)",@"包含的字符串"];)
3、ENDSWITH:左边的表达式以右边的表达式作为结束。
(例:request.predicate= [NSPredicate predicateWithFormat:@"(属性 ENDSWITH[cd] %@)",@"结束的字符串"];)
4、LIKE:左边的表达式等于右边的表达式:?和*可作为通配符,其中?匹配1个字符,*匹配0个或者多个字符。
(例1:request.predicate= [NSPredicate predicateWithFormat:@"(属性 LIKE[cd] %@)",@"zsz_???_iOS"]; // 属性等于zsz_开头中间,3个任意字符,_iOS结尾的字符串)
(例2:request.predicate= [NSPredicate predicateWithFormat:@"(属性 LIKE[cd] %@)",@"zsz_*_iOS_*"]; // 属性等于zsz_开头中间+任意字符+_iOS+任意字符的字符串)
5、MATCHES:左边的表达式根据ICU v3(更多内容请查看ICU User Guide for Regular Expressions)的regex风格比较,等于右边的表达式。
详细请看参考链接:
1、http://nshipster.cn/nspredicate/
2、http://perfectshen.github.io/2016/03/13/NSPredicate/
网友评论