int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... // NSLog(@"Hello, World!"); //NSPredicate过略数组元素的用法比如你从文件中读入了一个array1,然后想把程序中的一个array2中符合array1中内容的元素过滤出来。 // 正 常傻瓜一点就是两个for循环,一个一个进行比较,这样效率不高,而且代码也不好看。 // 其实一个循环或者无需循环就可以搞定了,那就需要用搞 NSPredicate这个类了~膜拜此类~ // NSArray *arrayFilter = [NSArray arrayWithObjects:@"pict", @"blackrain", @"ip", nil]; // NSArray *arrayContents = [NSArray arrayWithObjects:@"I am a picture.", @"I am a guy", @"I am gagaga", @"ipad", @"iphone", nil]; // int i = 0, count = [arrayFilter count]; // for(i = 0; i < count; i ++) // { // NSString *arrayItem = (NSString *)[arrayFilter objectAtIndex:i]; // NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"self CONTAINS %@", arrayItem]; // //去掉arrayContents中包含arrayFilter元素的元素 // NSLog(@"Filtered array with filter %@, %@", arrayItem, [arrayContents filteredArrayUsingPredicate:filterPredicate]); // } //另一个方法 不许循环 NSArray *arrayFilter = [NSArray arrayWithObjects:@"abc1", @"abc2", nil]; NSArray *arrayCon = [NSArray arrayWithObjects:@"a1", @"abc1", @"abc4", @"abc2", nil]; NSMutableArray *arrayContent=[[NSMutableArray alloc]initWithArray:arrayCon]; NSPredicate *thePredicate = [NSPredicate predicateWithFormat:@"NOT (SELF in %@)", arrayFilter]; //对arrayContent进行了过滤 [arrayContent filterUsingPredicate:thePredicate]; NSLog(@"%@",arrayContent); //剩下的例子比较容易理解,就运行代码了 // 4)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.使用正则 使用正则时 就需要用match来匹配 // NSString *match = @"imagexyz-\d{3}\.png"; //imagexyz-123.png // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF matches %@", match]; // NSArray *results = [directoryContents filteredArrayUsingPredicate:predicate]; //谓词对一些语法的支持 // predicate = [NSPredicate predicateWithFormat: @"name == 'Herbie'"]; // predicate = [NSPredicate predicateWithFormat: @"engine.horsepower > 150"]; // NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat:@"name == $NAME"]; // // varDict = [NSDictionary dictionaryWithObjectsAndKeys: // @"Herbie", @"NAME", nil]; // predicate = [predicateTemplate predicateWithSubstitutionVariables: varDict]; // // predicate = [NSPredicate predicateWithFormat: // @"(engine.horsepower > 50) AND (engine.horsepower < 200)"]; // predicate = [NSPredicate predicateWithFormat: @"name < 'Newton'"]; } return 0; }