我想执行确切的sql查询:
select * from table where field1 = 'x' or field2 = 'x' or field3 = 'x'
到目前为止,我只能在实体中获取一个字段:
NSArray *products = [Product MR_findByAttribute:@"id" withValue:categoryID];
假设我想为categoryID获取id
和name
字段,我该如何在MagicalRecord中执行此操作?
我可以通过以下方式做到:
NSArray *productsByID = [Product MR_findByAttribute:@"id" withValue:categoryID];
NSArray *productsByName = [Product MR_findByAttribute:@"name" withValue:categoryID];
不是有单行解决方案吗?因为在处理很多领域时,这会变得有点复杂。
答案 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"];