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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退