使用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);
期望的Found Result :
result: (
"299-1-1",
"299-2-1",
"299-3-1"
)
但是对于NSArray中带有NSSting的NSArray:
NSArray *arr = [NSArray arrayWithObjects:[NSArray arrayWithObjects:@"299-1-1", nil],[NSArray arrayWithObjects:@"399-1-1", nil],[NSArray arrayWithObjects:@"499-1-1", nil], nil];
这里的predicate syntax
是什么?
ChatGPT尝试为您解答,仅供参考
您可以使用SUBQUERY运算符来查询嵌套的数组。您可以使用以下语法来查询嵌套的数组:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(SELF, $x, $x CONTAINS %@).@count > 0", search];
这将在嵌套的数组中搜索每个字符串是否包含搜索字符串。如果存在一个字符串包含搜索字符串,则这个嵌套的数组将包含在结果中。
例如,对于您提供的数组,您可以使用以下代码来查找包含字符串"299"的嵌套的数组:
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:@"SUBQUERY(SELF, $x, $x CONTAINS %@).@count > 0", search];
NSArray *array = [arr filteredArrayUsingPredicate: predicate];
NSLog(@"result: %@", array);
输出应该是:
result: (
(
"299-1-1"
)
)