我有一个Exit对象。 每个Exit都有一个Category对象数组。
对象看起来像这样:
类别:( id ,名称)
退出:( id ,姓名,号码,......,NSArray(类别),...)
我想使用NSPredicate按类别数组中的类别名称来过滤退出,但我不确定如何写下来。 如果我想过滤退出退出名称,例如,我会这样做
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.exitName = %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];
但我不确定如何进入Categories数组并按类别名称搜索。
有什么建议吗?
答案 0 :(得分:1)
试试这个
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.exitName.category_name CONTAINS[c] %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];
答案 1 :(得分:0)
试试这个谓词
NSPredicate *matchingCategory = [NSPredicate predicateWithFormat:@"SUBQUERY(categories, $c, name CONTAINS[cd] %@).@count > 0", categoryName];
<强>解释强>
SUBQUERY()
函数创建一个与给定子谓词匹配的对象数组。在这种情况下,该子谓词是name CONTAINS[cd] %@
。它的工作方式是迭代集合(第一个参数),指定名称$c
(第二个参数)来引用每个元素,然后测试子谓词是否与该元素匹配。如果匹配,则将其添加到数组中。
SUBQUERY()完成后,使用@count属性聚合数组。如果有任何匹配(@count > 0
),则退出的总谓词将与正在测试的出口匹配。