我有以下情况:
NSArray(
NSArray(
string1,
string2,
string3,
string4,
string5,
)
,
NSArray(
string6,
string7,
string8,
string9,
string10,
)
)
现在我需要一个返回包含特定字符串的数组的谓词。 例如包含string9的过滤器数组 - >我应该回到整个第二个数组,因为我需要处理该数组中的其他字符串。有什么想法吗?
答案 0 :(得分:20)
为了完整性:可以使用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 ) )
答案 1 :(得分:1)
据我所知,你不能将其作为单行使用,所以不应使用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;
}]];
<强>更新强> 马丁R证明我错了:)