OC谓词

    xiaoxiao2025-07-25  4

    谓词 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’ ”

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

    转载请注明原文地址: https://ju.6miu.com/read-1301064.html
    最新回复(0)