CoreData NSPredicate的字符串比较

在使用过程中有这么一个需求,需要剔除实体某个属性的值不包含某个字符串,查资料后代码如下:

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/

你可能感兴趣的:(CoreData NSPredicate的字符串比较)