Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS/Objective-C/核心数据:使用复杂的条件逻辑预测_Ios_Objective C_Nspredicate - Fatal编程技术网

IOS/Objective-C/核心数据:使用复杂的条件逻辑预测

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

我正在使用NSPredicate筛选coredata中的实体。苹果和其他公司提供的大多数示例并没有体现SQL中可以实现的复杂逻辑,但由于谓词解析为SQL,在我看来,可能比苹果文档中容易看到的更多

特别是,如果某个属性为true,我希望按一个日期筛选托管对象,如果该属性为false,则按一个较早的日期筛选托管对象

比如:

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个小时回答了同样的问题。