IOS/Objective-C/Core 数据:具有复杂条件逻辑的 NSPredicates

IOS/Objective-C/Core Data: NSPredicates with Complicated Conditional logic

我正在使用 NSPredicate 来过滤 coredata 中的实体。 Apple 和其他人提供的大多数示例都没有体现您可以在 SQL 中执行的复杂逻辑,但由于谓词解析为 sql,在我看来,可能比容易看到的更多在苹果文档中。

特别是,如果某个属性为真,我想按一个日期过滤托管对象,如果属性为假,我想按更早的日期过滤。

类似于:

NSDate *now = [NSDate date];
NSDate *lastYear =   [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitYear value:-1 toDate:now options:0];

NSPredicate *myPred=  [NSPredicate predicateWithFormat:@"new==1 ? date >= %@ :date>=%@", now,lastYear];

有什么方法可以将条件逻辑放入 NSPredicate 中吗?

这应该可以通过以下格式实现

@"(new == 1 AND date >= %@) OR (new == 0 AND date >= %@)", now, lastYear

希望对您有所帮助。

试试这个

[NSPredicate predicateWithFormat:@"(new == 1 AND date >= %@) OR (new == 0 AND date >= %@)", now, lastYear];