OC 谓词

来源:互联网 发布:家庭网络方案 编辑:程序博客网 时间:2024/06/16 00:32

谓词 NSPredicate:用于创建指定过滤条件的类


创建谓词: NSPredicate* pre =  [NSPredicate predicateWithFormat:" name == '1111'  " ]     内部的字符串要用单引号  否则会被认为是键路径

计算谓词: BOOl res = [pre  evaluateWithObject:car]                   //查询car是否满足谓词pre   谓词条件是  对象的 键路径name 的值是否为1111


数组过滤器:

NSArray*  arry = [cars    filteredArrayUsingPredicate:pre]   循环数组的每个元素将满足谓词条件的对象返回


1.格式化说明符创建谓词:

%K 键路径   %d 数字  %@ 字符串  不要用‘%@’

 NSPredicate* pre =  [NSPredicate predicateWithFormat:" %K==%@",@"name",@"11111" ]


2.将变量放在字符串中创建谓词:

第一步:创建一个字典 key变量名  value变量值

第二步:创建谓词   NSPredicate* pre =  [NSPredicate predicateWithFormat:"name = $name " ]

第三部:设置谓词的’环境变量表‘为第一步创建的字典predicateWithSubtitutionVariables

其实就是将谓词中要使用的一些值用变量表示 将变量的名字和值保存到一个字典中 在将字典保存到谓词中


谓词支持C语言逻辑运算符  oc的运算符不区分大小写


数组运算符:

BETWEEN    {50,100}

IN  {.....}


当谓词应用于一些简单的值如NSString  无法设置谓词的键路径  可以用SELF 

SELF表示响应谓词的对象


有一些运算符是针对字符串的:

BEGINSWITH: 字符串a是否以某个字符串b开始

ENDSWITH:    ..........................................结束

CONTAINS:包含

“name   BEGINSWITH [cd] ''11111 ”   c不区分大小写    d不区分发音符


LIKE:

“name  LIKE ‘*er*’ ”

“name  LIKE ‘????er’ ”


谓词的效率高于正则表达式





0 0
原创粉丝点击