我正在处理 Core Data 和 NSFetchedResultsController
。
我的数据模型如下所示:
Product
具有称为 dataLines
的一对多关系。
dataLine
实体有一个属性名称 theWeek
。
我想获取所有 Product
,其中 dataLines.theWeek == someValue
。这可以通过子查询轻松完成。但这会返回所有数据线。是否可以创建一个返回 Product
的 NSPredicate
和一个子集(如果 dataLines 仅具有 dataLines == someValue
)?
最佳答案
您可以通过两种方式实现您想要实现的目标:
使用子查询
[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18]];
或 ANY 修饰符
[NSPredicate predicateWithFormat:@"ANY dataLines.theWeek == %@", [NSNumber numberWithInt:18]];
如果您需要检查多个值,您还可以执行以下操作:
[NSPredicate predicateWithFormat:@"SUBQUERY(dataLines, $x, $x.theWeek == %@ or $x.theWeek == %@).@count > 0)", [NSNumber numberWithInt:18], [NSNumber numberWithInt:19]];
这同样适用于 ANY
修饰符。 任何...或任何...
。
也许如果您分享一些代码我们可以帮助您。
附言我想您不使用标量值,theWeek
是一个数字。
希望对您有所帮助。
关于ios - NSPredicate,获取结果与一对多关系的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857930/