NSPredicate,以一对多关系的子集获得结果

kar*_*ofk 2 core-data nspredicate nsfetchedresultscontroller nsfetchrequest ios

我正在努力使用Core Data和NSFetchedResultsController.

我的数据模型如下所示:

Product与一对多的关系称为dataLines.该dataLine实体具有属性名称theWeek.

我想抓住所有Product地方dataLines.theWeek == someValue.使用子查询可以轻松完成此操作.但是这会返回所有dataLines.是否有可能创建一个NSPredicate返回Product和子集,如果dataLines只有dataLines == someValue

Lor*_*o B 8

您希望通过两种方式实现您想要实现的目标:

使用SUBQUERY

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18]];
Run Code Online (Sandbox Code Playgroud)

或ANY修饰符

[NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", [NSNumber numberWithInt:18]];
Run Code Online (Sandbox Code Playgroud)

如果需要检查多个值,还可以执行以下操作:

[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@ or $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18], [NSNumber numberWithInt:19]];
Run Code Online (Sandbox Code Playgroud)

同样可以应用于ANY修饰符.ANY ... OR ANY ....

也许如果你分享一些代码我们可以帮助你.

PS我想你不使用标量值而且theWeek是一个数字.

希望能帮助到你.