首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iOS中对对象的对象值数组使用谓词

如何在iOS中对对象的对象值数组使用谓词
EN

Stack Overflow用户
提问于 2015-11-03 09:48:41
回答 2查看 1.8K关注 0票数 0

我有个出口对象。每个出口都有一个类别对象数组。

对象的外观如下:

类别:(id,名称)

出口:(id,name,number,.,NSArray(类别),.)

我想使用NSPredicate通过类别名过滤出口,但是我不确定如何将其写下来。例如,如果我想按出口名称过滤出口,我会这样做

代码语言:javascript
复制
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.exitName = %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];

但我不知道如何进入类别数组并按类别名称进行搜索。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-03 10:00:40

尝尝这个

代码语言:javascript
复制
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF.exitName.category_name CONTAINS[c] %@", name];
NSArray *results = [exits filteredArrayUsingPredicate:predicate];
票数 1
EN

Stack Overflow用户

发布于 2015-11-03 10:12:24

试试这个谓词

代码语言:javascript
复制
NSPredicate *matchingCategory = [NSPredicate predicateWithFormat:@"SUBQUERY(categories, $c, name CONTAINS[cd] %@).@count > 0", categoryName];

解释

SUBQUERY()函数创建一个与给定子谓词匹配的对象数组。在本例中,该子谓词是name CONTAINS[cd] %@。它的工作方式是迭代集合(第一个param),指定名称$c (第二个param)来引用每个元素,然后进行测试,查看子谓词是否匹配该元素。如果匹配,则将其添加到数组中。

SUBQUERY()完成后,将使用@count属性对数组进行聚合。如果有任何匹配(@count > 0),出口上的总体谓词将匹配正在测试的出口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33495920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档