通过实体中的多个属性查找

时间:2013-06-27 18:43:52

标签: sql magicalrecord

我想执行确切的sql查询:

select * from table where field1 = 'x' or field2 = 'x' or field3 = 'x'

到目前为止,我只能在实体中获取一个字段:

NSArray *products = [Product MR_findByAttribute:@"id" withValue:categoryID];

假设我想为categoryID获取idname字段,我该如何在MagicalRecord中执行此操作?

我可以通过以下方式做到:

NSArray *productsByID = [Product MR_findByAttribute:@"id" withValue:categoryID];
NSArray *productsByName = [Product MR_findByAttribute:@"name" withValue:categoryID];

不是有单行解决方案吗?因为在处理很多领域时,这会变得有点复杂。

1 个答案:

答案 0 :(得分:3)

使用NSPredicate。例如

[Contact MR_findAllWithPredicate:[NSPredicate predicateWithFormat:@"%K contains[cd] %@ or %K contains[cd] %@", @"name", @"jo", @"surname", @"jo"];

如果Contact是一个实体,%K是键的占位符(实体的属性),%@占位符代表搜索值。

此谓词用于查找名称或姓氏包含jo的任何联系人。

为您解决方案

select * from table where field1 = 'x' or field2 = 'x' or field3 = 'x'

[Product MR_findAllWithPredicate:[NSPredicate predicateWithFormat: @"%K == %@ OR %K == %@ OR %K == %@", @"field1", @"x", @"field2", @"x", @"field3", @"x"];