iOS-嵌套数组的NSPredicate

我有以下对象结构

分类:

>子类别(子类别的nsarray)

类别:

>问题(问题的nsarray)

题:

>问题(nsstring)
>答案(nsstring)

我需要的是使用给定的子字符串搜索任何问题

以下谓词不起作用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY subcategories.questions.question CONTAINS[cd] %@", substring];

如何正确获取它们?

最佳答案
对于更复杂的谓词字符串语法,我通常使用predicateWithBlock评估它们,因为它更容易调试和理解.但是,为此,如果您要做的只是获取包含给定子字符串的类别中的所有问题,我将使用:

NSArray *questions = [self arrayByFlattening:[categories valueForKeyPath:@"subcategories.questions"]];
questions = [questions filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"question CONTAINS[cd] %@", substring]];

其中arrayByFlattening是一种将数组展平的方法.

如果您需要一次执行全部操作,即如果您使用的是具有大量样本源的核心数据,并且不想获取超出所需数量的内容然后过滤结果,则此方法效果不佳.

转载注明原文:iOS-嵌套数组的NSPredicate - 代码日志