NSPredicate 搜索 NSSet

Posted

技术标签:

【中文标题】NSPredicate 搜索 NSSet【英文标题】:NSPredicate searching NSSet 【发布时间】:2013-04-03 09:01:45 【问题描述】:

我一直在环顾四周,看到了与我正在做的事情类似的例子,但无法让它们发挥作用。我有一个“产品”核心数据实体,它与“制造商”实体有一对多关系。 “制造商”有一个我要搜索的属性“名称”。 “产品”还有一个我希望搜索的“isCustomItem”属性。所以我想要达到的效果如下:

Product 1...m Manufacturer.name AND Product.isCustomItem == 0

这就是我迄今为止设法走到一起的:

NSPredicate *p3 = [NSPredicate predicateWithFormat:@"SUBQUERY(manufacturer,$m,$m.name CONTAINS[c] %@) AND (isCustomItem == 0)", searchString];

但是我不断收到错误:

**'Unable to parse the format string "SUBQUERY(manufacturer,$m,$m.name CONTAINS[c] %@) AND (isCustomItem == 0)"'**

【问题讨论】:

【参考方案1】:

试试这样的...

NSPredicate *namePredicate = [NSPredicate predicateWithFormat:@"ANY manufacturer.name CONTAINS[c] %@", searchString];
NSPredicate *customPredicate = [NSPredicate predicateWithFormat:@"isCustomItem == 0"];

NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubPredicates:@[namePredicate, customPredicate]];

然后使用 CompoundPredicate 过滤您的集合。

【讨论】:

感谢您的快速回复。这样做时我仍然收到此错误:'无法解析格式字符串“任何制造商.name CONTAINS [c] @%”' 应该是%@,而不是@% 呸,不敢相信我也没听懂。已经解决了,谢谢你的帮助!

以上是关于NSPredicate 搜索 NSSet的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSPredicate 和数组进行 cloudKit 搜索

NSPredicate 查询/搜索

NSPredicate 用数组搜索逗号分隔值

使用 NSPredicate 进行核心数据实体搜索

使用 NSPredicate 搜索/过滤自定义类数组

如何使用 NSPredicate 加快数组搜索速度?