具有 NSPredicate 和 OR 条件的 CoreData

Posted

技术标签:

【中文标题】具有 NSPredicate 和 OR 条件的 CoreData【英文标题】:CoreData with NSPredicate and OR condition 【发布时间】:2014-10-21 18:56:58 【问题描述】:

我有一个关于 NSPredicate 的问题。

我使用这个谓词来获取status=="Compare"的所有结果

NSFetchRequest *request = [[NSFetchRequest alloc] init];
        NSEntityDescription *entity = [NSEntityDescription @"MyEntity"
                                                  inManagedObjectContext:context];
        [request setEntity:entity];

        NSPredicate *predicate =
        [NSPredicate predicateWithFormat:@"status == %@",@"Created"];
        [request setPredicate:predicate];

但现在我会采用状态等于“CreatedORReaded”的所有结果。 我必须如何更改我的谓词?

【问题讨论】:

【参考方案1】:

这能解决问题吗?

[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
  return [[evaluatedObject status] isEqualToString:@"Created"] || [[evaluatedObject status] isEqualToString:@"Readed"];
];

【讨论】:

【参考方案2】:

试试

[NSPredicate predicateWithFormat:@"status IN %@",@[@"Created", @"Readed"]];

【讨论】:

以上是关于具有 NSPredicate 和 OR 条件的 CoreData的主要内容,如果未能解决你的问题,请参考以下文章

具有“NOT IN”条件的 NSPredicate 失败

核心数据 - NSPredicate 用于具有相同列且满足另一个条件的对象

NSPredicate 在获取请求中使用 @max 和其他条件

NSPredicate 格式问题

iOS NSPredicate

NSPredicate 与具有多个对象的 Array 一起使用