NSPredicate在NSArray中搜索包含带有自定义对象的NSArrays

时间:2014-04-16 10:50:59

标签: objective-c nsstring nsarray iteration nspredicate

我有一个名为NSArray的{​​{1}}包含groups个对象,每个对象都包含NSArray个对象,而这些对象又继承自QuestionSub类。

问题类包括一个名为Question的{​​{1}}值。这是我想要搜索的字符串。 问题是NSString包含名为Id的{​​{1}},它是对父问题的引用;因此我不能使用QuestionSub查询NSString语句,因为它将匹配任何相等的字符串。

我的问题是我的搜索没有返回结果。但是,我似乎找不到正确的查询parent来获得正确的结果。

这是我的代码:

NSPredicate

这是我ANY的代表: The representation

2 个答案:

答案 0 :(得分:1)

看起来你可以使用字符串比较谓词,你可以试试这个:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"Id CONTAINS[c] %@", guid];

答案 1 :(得分:1)

问题是 filteredArrayUsingPredicate:过滤整个groups数组。因此,任何运算符都会过滤掉包含具有所需Id属性的Question对象的所有子数组。

在您的示例中,您在同一个子数组中有相同的 Id 的问题,因此ANY在这里正常工作,并且==和CONTAINS之间没有区别我们的目标。

要获得所需的结果,首先需要将您的群体展平为一维问题数组,然后应用您的谓词。

不幸的是,NSArray类没有提供任何方法来展平多维数组(: