使用NSPredicate iOS在具有NSString的NSArray的NSArray中查找值

Par*_*iya 2 iphone objective-c nspredicate ios

随着NSArray只有我能找到值:

NSArray *arr = [NSArray arrayWithObjects:@"299-1-1", @"299-2-1", @"299-3-1", @"399-1-1", @"399-2-1", @"399-3-1", @"499-1-1", @"499-2-1", @"499-3-1", nil];
NSString *search = @"299";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@",[NSString stringWithFormat:@"%@", search]];
NSArray *array = [arr filteredArrayUsingPredicate: predicate];
NSLog(@"result: %@", array);
Run Code Online (Sandbox Code Playgroud)

Found Result 正如所料:

 result: (
 "299-1-1",
 "299-2-1",
 "299-3-1"
 )
Run Code Online (Sandbox Code Playgroud)

但对于NSArrayNSArrayNSString

NSArray *arr = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@"299-1-1", nil],[NSArray arrayWithObjects:@"399-1-1", nil],[NSArray arrayWithObjects:@"499-1-1", nil], nil];
Run Code Online (Sandbox Code Playgroud)

会在predicate syntax这里?????

Mar*_*n R 14

要在嵌套数组中搜索,可以在谓词中使用"ANY"运算符:

NSArray *arr = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@"299-1-1", nil],[NSArray arrayWithObjects:@"399-1-1", nil],[NSArray arrayWithObjects:@"499-1-1", nil], nil];
NSString *search = @"299";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF CONTAINS %@", search];
NSArray *array = [arr filteredArrayUsingPredicate: predicate];
NSLog(@"result: %@", array);
Run Code Online (Sandbox Code Playgroud)

输出:

(
    (
        "299-1-1"
    )
)