[英]Using NSPredicate to filter array of arrays
我有以下情况:
NSArray(
NSArray(
string1,
string2,
string3,
string4,
string5,
)
,
NSArray(
string6,
string7,
string8,
string9,
string10,
)
)
现在我需要一个返回包含特定字符串的数组的谓词。 例如,包含string9的Filter Array - >我应该返回整个第二个数组,因为我需要处理该数组中的其他字符串。 有任何想法吗?
只是为了完整性: 可以使用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;
}]];
更新:马丁R证明我错了:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.