IOS/Objective-C/核心数据:使用复杂的条件逻辑预测
我正在使用NSPredicate筛选coredata中的实体。苹果和其他公司提供的大多数示例并没有体现SQL中可以实现的复杂逻辑,但由于谓词解析为SQL,在我看来,可能比苹果文档中容易看到的更多 特别是,如果某个属性为true,我希望按一个日期筛选托管对象,如果该属性为false,则按一个较早的日期筛选托管对象 比如:IOS/Objective-C/核心数据:使用复杂的条件逻辑预测,ios,objective-c,nspredicate,Ios,Objective C,Nspredicate,我正在使用NSPredicate筛选coredata中的实体。苹果和其他公司提供的大多数示例并没有体现SQL中可以实现的复杂逻辑,但由于谓词解析为SQL,在我看来,可能比苹果文档中容易看到的更多 特别是,如果某个属性为true,我希望按一个日期筛选托管对象,如果该属性为false,则按一个较早的日期筛选托管对象 比如: NSDate *now = [NSDate date]; NSDate *lastYear = [[NSCalendar currentCalendar] dateByAdd
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];
此外,在中,您可以找到NSPredicate Syntax的文档,它看起来非常简单。我真是太笨了。谢谢你能解释一下你的答案和@johnyu的答案有什么不同吗?他比你早4个小时回答了同样的问题。