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的数组。

  • 相关阅读:
    Android
    十大基础有用算法之迪杰斯特拉算法、最小生成树和搜索算法
    【随想】android是个什么东西,andorid机制随想
    【Unity3D】【NGUI】Atlas的动态创建
    Java集合01----ArrayList的遍历方式及应用
    JAVA线程
    VC++的project文件
    selector的button选中处理问题
    单元測试和白盒測试相关总结
    leetCode(40):Path Sum
  • 原文地址:https://www.cnblogs.com/guanliyang/p/3777940.html
Copyright © 2011-2022 走看看