如何使用嵌套数组搜索自定义对象的NSArray?

时间:2017-01-13 19:45:31

标签: ios objective-c arrays

我的应用中有NSArray。此数组由自定义对象组成,这些自定义对象具有一个NSArray,其中也包含这些自定义对象。它的结构如下:

@[
    entry,
    entry,
    entry
]

Entry对象的value参数为NSArray,其中包含条目。正如您所看到的,它是一个嵌套的自定义对象数组。但是,value参数也可以是NSString。我的问题是:我如何搜索这个数组并在其子项中搜索value为字符串并与查询匹配的条目?

1 个答案:

答案 0 :(得分:2)

嗯,最简单的,可能不是最佳表现方式,就是将它们全部循环遍历。由于你的数据结构似乎可能是条目数组,它可能包含条目数组的值,可以继续使用,我会把它写成递归函数。

- (NSArray<Entry *> *)entriesWithValueMatching:(NSString *)value inArray:(NSArray<Entry *> *)arrayOfEntries
{
    NSMutableArray *matchingEntries = [NSMutableArray array];

    for (Entry *entry in arrayOfEntries) {
        if ([entry.value isKindOfClass:[NSArray class]]) {
            [matchingEntries addObjectsFromArray:[self entriesWithValueMatching:value inArray:entry.value]];
        } else if ([entry.value isKindOfClass:[NSString class]]) {
            if ([(NSString *)entry.value isEqualToString:value]) {
                [matchingEntries addObject:entry];
            }
        }
    }

    return matchingEntries.copy;
}