NSPredicate

NSPredicate

1.从 数组1中过滤出数组2中没有的对象

NSArray *arrayFilter =[NSArray arrayWithObjects:@"abc1", @"abc2", nil];

NSArray *arrayContent =[NSArray arrayWithObjects:@"a1", @"abc1",@"abc4", @"abc2", nil];

NSPredicate *thePredicate= [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter];

[arrayContentfilterUsingPredicate:thePredicate];

这样arrayContent过滤出来的就是不包含arrayFilter中的所有item了。

match的用

1. 简单比较

NSString *match =@"imagexyz-999.png";

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"SELF == %@", match];

NSArray *results =[directoryContents filteredArrayUsingPredicate:predicate];

2. match里like的用法(类似Sql中的用法)

NSString *match =@"imagexyz*.png";

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

NSArray *results =[directoryContents filteredArrayUsingPredicate:predicate];

3. 大小写比较

 [c]表示忽略大小写,[d]表示忽略重音,可以在一起使用,如下:

NSString *match =@"imagexyz*.png";

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"SELF like[cd] %@", match];

NSArray *results =[directoryContents filteredArrayUsingPredicate:predicate];

4.使用正则

NSString *match =@"imagexyz-\\d{3}\\.png"; //imagexyz-123.png

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"SELF matches %@", match];

NSArray *results =[directoryContents filteredArrayUsingPredicate:predicate];

总结:

1) 当使用聚合类的操作符时是可以不需要循环的

2)当使用单个比较类的操作符时可以一个循环来搞定

PS,例子 一中尝试使用[@"SELF CONTAINS %@", arrayFilter] 来过滤会挂调,因为CONTAINS时字符串比较操作符,不是集合操作符

NSDictionary,NSMutableDictionary

NSMutableArray *objects =[myDictionary objectsForKeys:myKeys notfoundMarker:[NSNull null]];  // 这里不能用nil


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值