ios - 基于一对多值的NSPredicate过滤器

标签 ios core-data filtering nspredicate

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

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

SubCategory
{
    name:string
    numbervalue:NSNumber
}

目前,我可以使用NSPredicate根据名称过滤我的部分。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"anamevalue"];

现在,我想进一步过滤此谓词,以仅返回具有Subcategorysubvalue == 1的类别。

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

我尝试过类似的方法,但是效果不好。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@ AND subs.numbervalue==%@",@"anamevalue",1];

最佳答案

我将做如下谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name == %@ AND ANY subs.numbervalue == %@)", @"anamevalue", [NSNumber numberWithInt:1]];
ANY是一个谓词修饰符,仅当subs集合中至少有一个对象的比较结果为true时,它才返回true。

可以通过SUBQUERY完成相同的结果。

希望能帮助到你。

关于ios - 基于一对多值的NSPredicate过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313599/

相关文章:

ios - 在 Swift 3 中将类与具有相同名称的实例成员区分开来

iphone - 围绕典型用法的核心数据问题

google-sheets - 过滤 Google 表格中的非唯一数据集

zend-framework - Zend 框架过滤器输入 StripTags 和 "<3"

ios - 打开 WatchOS2 时获取更新的应用程序上下文

ios - flutter tar : Failed to set default locale in android studio IOS

ios - 如何从 Core Data 中的持久存储中删除所有对象?

ios - 在 Objective-C/ios 中存储模型- View - Controller 数据的最佳替代方案 'long term'

google-apps-script - 如何从过滤器中自动选择范围而无需手动输入?

c# - 为什么我会收到此错误?无法从中加载类型