关于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,所以用起来也不会太难,还支持正则,更多的语法和用法可以参考一下地址:

 

https://developer.apple.com/library/mac/documentation/cocoa/conceptual/predicates/Articles/pCreating.html

 

https://developer.apple.com/library/ios/documentation/cocoa/conceptual/Predicates/Articles/pUsing.html

 

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

 

 

posted @ 2013-11-08 02:26  老区  阅读(156)  评论(0)    收藏  举报