0
回答
iOS中NSArray的高级应用-过滤

c/c++开发人员一定很喜欢用boost库,它有很强大的容器功能,在iOS开发中Array也相当于容器,功能也比较强大。NSArray可以用NSPredicate来过滤数组内容,NSPredicate有点像sql+正则表达,具体语法在此不谈,自己google一堆。

 

不想打字了(我超级懒),用代码说话:

//找出一个数组 
   NSFileManager *fileManager = [NSFileManager defaultManager];
    NSString *defaultPath = [[NSBundle mainBundle] resourcePath];
    NSError *error;
	
    NSArray *directoryContents = [fileManager contentsOfDirectoryAtPath:defaultPath error:&error]
//匹配字符串,反回结果, SELF==表示数组中每一个元素
NSString *match = @"imagexyz-999.png";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];

//近似匹配字符串,类似SQL中的语法
NSString *match = @"imagexyz*.png";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
//不区分大小写匹配
NSString *match = @"imagexyz*.png";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[cd] %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
//正则匹配
NSString *match = @"imagexyz-//d{3}//.png";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match];
    NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate];
 


这儿还有更为详细的例子:http://lethain.com/filtering-arrays-in-objective-c/


原文链接:http://blog.csdn.net/favormm/article/details/6337910
<无标签>
举报
长平狐
发帖于6年前 0回/203阅
顶部