核心数据与AND的许多NSPredicate

时间:2010-02-26 19:15:52

标签: cocoa core-data nspredicate

我正在尝试为查找类型的搜索栏编写查询。我想要做的是查询“Kind”,并返回任何具有LocalName的种类('name'LIKE%@ AND localeIdentifier ==%@)。

如果我只搜索名称(忽略localeIdentifier),我可以这样做:

ANY localized.name LIKE %@

我想要的更像是

ANY localized.(name LIKE %@ AND localeIdentifier == %@)

总而言之,搜索“Kind”,多对多关系中的任何一个项目“本地化”应该与name和localeIdentifier都匹配。

有关正确语法的任何想法吗?

1 个答案:

答案 0 :(得分:9)

你想要的是subquery。在谓词格式语法中:

SUBQUERY(self.localized, $x, $x.name LIKE %@ AND $x.localeIdentifier == %@).@count > 0

其中SUBQUERY表达式返回self.localized集合中与第三个参数中的谓词匹配的实例集合。此SUBQUERY表达式非空(即Kind)的@count > 0个实例符合您所需的条件。

SUBQUERY表达式是在OS X 10.5中引入的。