创建Core Data谓词以在一对多关系中获取数据

时间:2012-05-25 21:14:14

标签: core-data nspredicate one-to-many

我有一个Loans实体,其returnedDate属性可以包含日期或为NIL。与另一个实体Items存在多对多的关系,以便项目可以与许多Loans相关联。我想创建一个谓词,在那里我可以找到当前没有loans.returnedDate==NIL的所有项目。

假设我目前有以下内容:

Loan1-item1,returnedDate=NIL
Loan2-item1,returnedDate=5/4/2012
Loan3-item2,returnedDate=NIL.

我想要一个不返回任何项目的谓词。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"!(ANY loaned.returnDate==nil)"];

返回item1。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(NONE loaned.returnDate==nil)"];

返回item1。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"(ANY loaned.returnDate!=nil)"];

返回item1。

有人能告诉我什么逻辑会返回适当的结果?

1 个答案:

答案 0 :(得分:0)

所以我使用了以下谓词:

(SUBQUERY(loaned, $sub, $sub.returnDate==nil).@count == 0)

它正在返回所需的结果。如果你能说服我不要使用SUBQUERY,请告诉我如何。