Ios 在Objective C中,如果没有任何键,如何过滤多维NSArray?

Ios 在Objective C中,如果没有任何键,如何过滤多维NSArray?,ios,objective-c,json,multidimensional-array,nsarray,Ios,Objective C,Json,Multidimensional Array,Nsarray,因此,我将以下JSON存储在多维NSArray中: [ [ ["First", "Mr Smith", 1], ["Second", "Mr Thomas", 0], ["Third", "Mr Man", 0], ["Fourth", "Mrs Man", 1], ], [ ["Fifth", "Mr Johnson", 0],

因此,我将以下JSON存储在多维NSArray中:

[
      [
            ["First", "Mr Smith", 1],
            ["Second", "Mr Thomas", 0],
            ["Third", "Mr Man", 0],
            ["Fourth", "Mrs Man", 1],
      ],
      [
            ["Fifth", "Mr Johnson", 0],
            ["Sixth", "Mr Mr", 1],
            ["Seventh", "Mr Sir", 1],
      ]
]
在Objective-C中(用于测试)

我想创建另一个数组,其中只包含最终值为1的元素。 我已经在这里坐了好几个小时,试着在网上找到各种不同的谓词建议,但似乎都不管用。任何帮助都将不胜感激

NSMutableArray* validArrayObjects = [[NSMutableArray alloc] init];

for (NSArray* arrayOfArrays in arrayOfArrayObjects)
{
    for(NSArray* arrayOfObjects in arrayOfArrays)
    {
        id obj = [array lastObject];
        if ([obj isKindOfClass:[NSNumber class]]) {
            NSNumber *num = (NSNumber *)obj;
            if ([num isEqualToNumber:@(1)]) {
                [validArrays addObject:array];
            }
        }
    } 
}

这将遍历所有JSON对象(当然,假设您已经解析过),然后检查每个数组对象中的最后一个索引,查看其是否为1。如果是,请将其添加到有效对象数组。

使用
NSPredicate
筛选数组,然后按如下方式尝试:-

NSMutableArray *mutArr=[NSMutableArray array];
for (NSArray *jsonArr in json)
{
NSArray *filterArr=[jsonArr filteredArrayUsingPredicate:
                          [NSPredicate predicateWithFormat:
                                                @"SELF CONTAINS[CD] %@",@1]];
[mutArr addObject:filterArr];
}
NSLog(@"%@",mutArr);

你不需要谓词。写一些简单的代码来迭代你需要的数组。写代码,检查每个条目,看看它是否通过测试。我希望有一个更优雅的解决方案存在,但我想几个循环就可以了。我发现写软件是相当优雅的,如果做得好的话。我发现许多所谓的“优雅的解决方案”,使用某种“为我做一切”的工具,比简单地编写代码更长、更难看、更慢、更难理解。另外,OP有一个数组的数组。您的代码缺少一个级别。是,我刷新时正在编辑。我已经习惯了swift lol。我会把它清理干净的。你不能像现在这样比较这两个数字。@Aggressor-你应该研究一下
NSPredicate
,它会简化你的代码,是过滤数组的最简单方法变量
array
来自哪里?
NSMutableArray *mutArr=[NSMutableArray array];
for (NSArray *jsonArr in json)
{
NSArray *filterArr=[jsonArr filteredArrayUsingPredicate:
                          [NSPredicate predicateWithFormat:
                                                @"SELF CONTAINS[CD] %@",@1]];
[mutArr addObject:filterArr];
}
NSLog(@"%@",mutArr);