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

转载于:https://www.cnblogs.com/guanliyang/p/3777940.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值