ios - NSPredicate,获取结果与一对多关系的子集

标签 ios core-data nspredicate nsfetchedresultscontroller nsfetchrequest

我正在处理 Core Data 和 NSFetchedResultsController

我的数据模型如下所示:

Product 具有称为 dataLines 的一对多关系。 dataLine 实体有一个属性名称 theWeek

我想获取所有 Product,其中 dataLines.theWeek == someValue。这可以通过子查询轻松完成。但这会返回所有数据线。是否可以创建一个返回 ProductNSPredicate 和一个子集(如果 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/

相关文章:

ios - 使用 NSPredicate 过滤数据数组,其中过滤文本是字符串数组

ios - 如何使用 NSURLSession 快速发送 HTTPS POST 请求

ios - 在 Swift 中以随机间隔定期调用函数

ios - 将保存的上下文从 AppDelegate 加载到另一个 ViewController

cocoa - NSManagedObjectID 到 NSData

ios - 使用 NSPredicate 比较两个数组

ios - 禁用 ScrollView 垂直滚动

ios - 如何在 SwiftUI 中与 GeometryReader 正确对齐

ios - 如何对CoreData中的相关对象进行排序?

ios - NSPredicates 可以用来用字典中的值替换数组中的对象吗?