1

我有 2 个具有一对多关系的实体。Category代表我的部分标题并SubSubCategory代表我的行。

Category
{
    name:string
    subs<-->>SubCategory
}

SubCategory
{
    name:string
    numbervalue:NSNumber
}

目前我可以用来NSPredicate根据名称过滤我的部分。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"anamevalue"];

现在我想进一步过滤这个谓词,只返回具有 aSubcategory和 a 的类别subvalue == 1

如何根据Category实体的一对多子项中的值过滤实体?

我试过这样的东西,但它没有好处。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%@",@"anamevalue",1];
4

2 回答 2

4

我会做一个如下的谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@ AND ANY subs.numbervalue == %@)", @"anamevalue", [NSNumber numberWithInt:1]];

TheANY是一个谓词修饰符,仅当 subs 集合中至少有一个对象的比较返回 true 时才返回 true。

同样的结果可以通过SUBQUERY.

希望能帮助到你。

于 2012-04-25T10:35:00.333 回答
0

谓词中的语法错误。您将整数值作为字符串传递。

你的谓词应该是

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%i",@"anamevalue",1]

除此之外,它看起来是正确的。

于 2012-04-25T10:34:06.147 回答