1

我想执行确切的 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];

不是有一条线的解决方案吗?因为当处理很多字段时,这会变得有点复杂。

4

1 回答 1

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"];
于 2013-07-23T14:41:07.010 回答