关于NSPredicate用法经验(By 老区)
在处理数组查找值的时候,一般会想到利用循环来进行值的比对
例如:
for(NSString *s in array) { if([s isEqualToString@"a"]) { ....... } }
但效率非常之低,之后搜索了一下,发现了一个好东西 NSPredicate ,那么如果利用这个函数来对数组的结果集进行过滤?
代码如下:
NSArray *rsArray = [NSArray initWithObjects:@"a",@"ab",@"abc",@"bc",nil]; NSString *string = @"a"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@ ",[string stringByAppendingString:@"*"]]; NSArray *array = [rsArray filteredArrayUsingPredicate: predicate]; NSLog(@"result: %@", array);
(这里 * 号需要添加在sting 对象里,尝试过 SELF like '%@*' 还有 SEFL like %@* 都不行,所以这里要注意一下)
可以看到输出的结果为:
result: ("a","ab","abc");
NSPredicate 还有更多的用法,它语法有点像SQL,所以用起来也不会太难,还支持正则,更多的语法和用法可以参考一下地址:
http://stackoverflow.com/questions/16852875/filter-nsarray-using-nspredicate
http://blog.csdn.net/lutaotony/article/details/6846476
http://www.cnblogs.com/MarsGG/articles/1949239.html

浙公网安备 33010602011771号