我有个出口对象。每个出口都有一个类别对象数组。
对象的外观如下:
类别:(id,名称)
出口:(id,name,number,.,NSArray(类别),.)
我想使用NSPredicate通过类别名过滤出口,但是我不确定如何将其写下来。例如,如果我想按出口名称过滤出口,我会这样做
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.exitName = %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];但我不知道如何进入类别数组并按类别名称进行搜索。
有什么建议吗?
发布于 2015-11-03 10:00:40
尝尝这个
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.exitName.category_name CONTAINS[c] %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];发布于 2015-11-03 10:12:24
试试这个谓词
NSPredicate *matchingCategory = [NSPredicate predicateWithFormat:@"SUBQUERY(categories, $c, name CONTAINS[cd] %@).@count > 0", categoryName];解释
SUBQUERY()函数创建一个与给定子谓词匹配的对象数组。在本例中,该子谓词是name CONTAINS[cd] %@。它的工作方式是迭代集合(第一个param),指定名称$c (第二个param)来引用每个元素,然后进行测试,查看子谓词是否匹配该元素。如果匹配,则将其添加到数组中。
SUBQUERY()完成后,将使用@count属性对数组进行聚合。如果有任何匹配(@count > 0),出口上的总体谓词将匹配正在测试的出口。
https://stackoverflow.com/questions/33495920
复制相似问题