使用 AND 对多 NSPredicate 的核心数据
Posted
技术标签:
【中文标题】使用 AND 对多 NSPredicate 的核心数据【英文标题】:Core data to-many NSPredicate with AND 【发布时间】:2010-02-26 19:15:52 【问题描述】:我正在尝试为“键入时查找”搜索栏编写查询。我想要做的是查询“Kind”,并返回任何具有 LocalName 的种类('name' LIKE %@ AND localeIdentifier == %@)。
如果我只搜索名称(因此忽略 localeIdentifier),我可以这样做:
ANY localized.name LIKE %@
我想要的是更像的东西
ANY localized.(name LIKE %@ AND localeIdentifier == %@)
综上所述,搜索“Kind”,“localized”对多关系中的任何一项都应匹配 name 和 localeIdentifier。
对这个的正确语法有什么想法吗?
【问题讨论】:
【参考方案1】:你想要的是subquery。在谓词格式语法中:
SUBQUERY(self.localized, $x, $x.name LIKE %@ AND $x.localeIdentifier == %@).@count > 0
其中SUBQUERY
表达式返回self.localized
集合中与第三个参数中的谓词匹配的实例集合。 Kind
此 SUBQUERY 表达式为非空的实例(即 @count > 0
)符合您所需的条件。
在 OS X 10.5 中引入了 SUBQUERY 表达式。
【讨论】:
很好的提示!正是我需要的!以上是关于使用 AND 对多 NSPredicate 的核心数据的主要内容,如果未能解决你的问题,请参考以下文章
核心数据:使用 SQLITE 存储类型时,包含对多关系的 NSPredicate 不会产生任何结果