使用NSPredicate来过滤数组
我有以下情况:
NSArray( NSArray( string1, string2, string3, string4, string5, ) , NSArray( string6, string7, string8, string9, string10, ) )
现在我需要一个返回包含特定string的数组的谓词。 例如包含string9的filter数组 – >我应该返回整个第二个数组,因为我需要处理该数组内的其他string。 有任何想法吗?
只是为了完整: 可以使用predicateWithFormat:
完成:
NSArray *array = @[ @[@"A", @"B", @"C"], @[@"D", @"E", @"F"], ]; NSString *searchTerm = @"E"; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF == %@", searchTerm]; NSArray *filtered = [array filteredArrayUsingPredicate:predicate]; NSLog(@"%@", filtered);
输出:
( ( d, E, F ) )
从我所知道的你不能作为一个单一的线程,而不是使用predicateWithFormat:
你应该使用predicateWithBlock:
像这样的东西应该做你想要的
NSString *someString = @"Find me"; // The string you need to find. NSArray *arrayWithArrayOfStrings = @[]; // Your array [arrayWithArrayOfStrings filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(NSArray *evaluatedArray, NSDictionary *bindings) { return [evaluatedArray indexOfObject:someString] != NSNotFound; }]];
更新:马丁Rcertificate我错了:)