NSPredicate 谓词

NSPredicate 谓词

Cocoa提供了一个名为NSPerdicate的类,它用于制定过滤器的条件。

可以创建NSPredicate的对象,通过他准确的描述所需的条件,通过谓词筛选每个对象,判断他们是否与条件相匹配。

说了这么抽象的,还是来点实际的;

谓词创建:

 NSPredicate *predicate;

 predicate = [NSPredicate predicateWithForm :name =='xiaoming'];
 BOOL match = [predicate evaluateWithObject:stu];

 NSLog("%s",(match)?"YES":"NO");

   
evaluateWithObject 这个方法是通过接收对象(即谓词)根据指定的对象计算自身的值。

stu 是一个对象。name 是自身的一个属性(内容为字符串)。

假如上个例子中stu这个对象里name等于小明,最后打印出来的就是“YES”。反之为“NO”。

数组过滤器

这是谓词的一个应用。

NSArray *stus = [stu];
//建立一个学生的数组
NSAraay *results;
//建立一个结果数组,将学上结果信息存起来
results = [stus filteredArrayUsingPredicate:predicate];
NSLog("%@",results);
结果:

小明,18

小刚,20

小聪,19

这是学生所有的信息,我们可以用KVC(键/值编码)提取其中的名字,将valueForkey:发送给数组时,键将作用于数组中所有的元素。

NSArray *names;
names = [results valueForKey:@"name"];
NSLog("%@",names);
结果:

小明,

小刚,

小聪


还有,想要输出所有年龄在19岁以上的可以用这种方法:

就是在创建谓词是name = ’xiaoming‘ 改为 age >= 19 就可以啦!


谓词查找经常用于搜索与筛选,后面还会介绍模糊查找。


                                                                                                                    韩钊


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值