lantianyiming 2013-04-18 03:17 采纳率: 0%
浏览 2441

使用NSPredicate在NSArray中查找值

使用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是什么?

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-21 15:25
    关注

    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"
        )
    )
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器