繁体   English   中英

使用NSPredicate过滤数组数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM