zoukankan      html  css  js  c++  java
  • 谓词--Predicate

    去苹果的的技术官网搜索-Predicate就会找到相关的文档-Predicate Programming Guide

     

    1,创建谓词时 

     

    %@是变量时不加单双引号,常量是加单引号,加双引号需要转义符号

    NSPredicate *predicate = [NSPredicate

     

        predicateWithFormat:@"(lastName like[cd] %@) AND (birthday > %@)",

     

                lastNameSearchString, birthdaySearchDate];

    2,%K 代表数组键值。

    3,看下面例子。

    NSMutableArray *array =

     

        [NSMutableArray arrayWithObjects:@"Nick", @"Ben", @"Adam", @"Melissa", nil];

     

     

     

    NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'a'"];

     

    NSArray *beginWithB = [array filteredArrayUsingPredicate:bPredicate];

     

    // beginWithB contains { @"Adam" }.

     

     

     

    NSPredicate *sPredicate = [NSPredicate predicateWithFormat:@"SELF contains[c] 'e'"];

     

    [array filterUsingPredicate:sPredicate];

     

    // array now contains { @"Nick", @"Ben", @"Melissa" }

     

    第一个beginswith[c] 以某个字符开头的,以a开头的,所以只会搜索到 adam。大家仔细看这行代码:NSArray *beginWithB = [array filteredArrayUsingPredicate:bPredicate];

    它会把结果付给beginWithB。array的值不变。

    第二个contains[c] 包含某个字符,包含e的,所以会搜索到@"Ben", @“Melissa”(文档里把@"Nick”,放那是错误的。)

    看代码:[array filterUsingPredicate:sPredicate];这行代码无返回值,此时array的值变成( Ben,Melissa)。

     

    4,

           NSString *firstName = @"Ben";

            

            NSArray *array = @[ @{ @"firstName" : @"Turner" },

            @{@"firstName" : @"Ben", @"lastName" : @"Ballard",

               @"birthday": [NSDatedateWithString:@"1972-03-24 10:45:32 +0600"] },

               @{ @"firstName" : @"Ben" },];

            

            NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName like %@", firstName];

            NSArray *filteredArray = [array filteredArrayUsingPredicate:predicate];

            

     

            NSLog(@"filteredArray: %@", filteredArray);

     

    搜索到键fitstName对应的值为Ben的数组。

  • 相关阅读:
    jquery将日期转换成指定格式的字符串
    jquery双日历日期选择器bootstrap-daterangepicker日历插件
    JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean
    S04_CH01_搭建工程移植LINUX/测试EMMC/VGA
    S03_CH13_ZYNQ A9 TCP UART双核AMP例程
    S03_CH12_基于UDP的QSPI Flash bin文件网络烧写
    S03_CH11_基于TCP的QSPI Flash bin文件网络烧写
    S03_CH10_DMA_4_Video_Stitch视频拼接系统
    S03_CH09_DMA_4_Video_Switch视频切换系统
    S03_CH08_DMA_LWIP以太网传输
  • 原文地址:https://www.cnblogs.com/guanliyang/p/3777940.html
Copyright © 2011-2022 走看看