如何在nsFetchRequest中创建根据不同实体的两个参数过滤的compoundpredicate

用户名

我的数据模型的一些背景信息:

manufacturer <-->> item <<-->> tag

我目前通过fetchrequest生成项目列表:

- (NSFetchRequest*) rankingRequestForItem:(Item*)item {
    NSFetchRequest* r = [NSFetchRequest fetchRequestWithEntityName:@"Item"];
    NSPredicate* p = [NSPredicate predicateWithFormat:@"SELF != %@",item.objectID];
    r.resultType = NSDictionaryResultType;
r.resultType = NSDictionaryResultType;

    r.propertiesToFetch = @[[self objectIDExpressionDescription],@"itemName",
                            [self rankingExpressionDescriptionForTags:[item mutableSetValueForKey:@"itemToTag"]]];

    r.predicate = p;
    r.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"itemName" ascending:YES]];

    return r;
}

这将生成所有项目的列表。我想为与特定制造商有关系的商品过滤它。因此,我在所有项目列表之后添加一个谓词,并按selectedManufacturer对其进行排序。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"itemToMa = %@", selectedManufacturer];

这可行,但是要抓取很多将被过滤掉的项目。对于大数据集,我认为随着搜索所有项目而不仅仅是与一个制造商关联的项目,它会变得越来越慢。我想过滤初始“ rankingRequestForItem”方法中的项目。

是否可以将上述谓词与顶部谓词一起移动并创建复合谓词?

蒙迪

我不会担心性能。Core Data可以很好地管理这一点。有时,谓词的顺序很重要,因此也许将制造商过滤器放在第一位。

您可以按照问题注释中的建议将谓词组合为一个,也可以使用复合谓词-结果几乎相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据 lambda 函数的两个参数过滤列表而不对参数进行硬编码?

如何根据传递的两个参数过滤获取结果?

如何使用两个参数过滤数组?

如何在MySQL中使用两个标签参数过滤结果?

如何根据两个不同列中的两个参数搜索和过滤Google表格

JavaScript按两个参数过滤

使用两个参数过滤所有列表

R根据两个不同的参数创建多个列

如何使用 dapper 映射/连接两个表并按参数过滤

AngularJS:使用从输入中获取的两个参数过滤结果

如何在FIWARE Orion中的两个实体之间创建联接查询?

如何在CesiumJS中的两个实体之间创建移动线?

如何根据两个参数从两个表中选择不同的数据?

根据参数过滤

如何根据url参数过滤数组

如何在流中不同的变换使用两个过滤器

如何在React Native中显示来自两个不同键值的过滤后的JSON数据

如何在不同的场合在一个函数中传递两个参数?

如何在过滤器Angular JS中传递两个参数?

AngularJS ng-repeat过滤器根据作用域有两个不同的参数

如何在Elixir中根据两个元组的列表创建地图

如何在Django的单个函数中传递两个不同的参数?

如何在SSRS中添加两个不同日期的日期和时间参数

如何在Node.js中以相同的形式传递两个不同的参数

使用另外两个实体过滤实体中的数据

如何在类中为两个不同的构造函数中的不同初始化的两个不同任务创建单个HashMap成员

如何在JavaScript中创建两个表并与不同的CSS一起使用?

如何在Excel中创建具有两个Y轴且值不同的图形

如何在R中具有不同维度的两个表之间创建比率表?