我有2个具有一对多关系的实体。 Category
代表我的标题标题,SubSubCategory
代表我的行。
Category
{
name:string
subs<-->>SubCategory
}
SubCategory
{
name:string
numbervalue:NSNumber
}
目前,我可以使用NSPredicate
根据名称过滤我的部分。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"anamevalue"];
现在,我想进一步过滤此谓词,只返回Subcategory
与subvalue == 1
的类别。
如何根据其中一对多子女的值过滤Category
实体?
我尝试过类似的东西,但这并不好。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%@",@"anamevalue",1];
答案 0 :(得分:4)
我会做如下的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@ AND ANY subs.numbervalue == %@)", @"anamevalue", [NSNumber numberWithInt:1]];
ANY
是一个谓词修饰符,只有当subs集合中至少有一个对象返回true时才返回true。
同样的结果可以通过SUBQUERY
。
希望它有所帮助。
答案 1 :(得分:0)
谓词中的语法错误。您将整数值作为字符串传递。
你的谓词应该是
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%i",@"anamevalue",1]
除此之外,它看起来是正确的。