对于NSDate,使用IN进行NSPredicate

时间:2013-07-15 06:46:42

标签: objective-c nsdate nspredicate

我想从startDateendDate大于日期的实体中获取对象 以数组形式提供。

我目前正在使用IN作为谓词,如下所示,

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K IN %@ OR %K in %@", kEntityEventAttributeStartDate, inArray, kEntityEventAttributeEndDate, inArray];
request setPredicate:predicate];

但我认为它会检查相同的日期我想要的日期更大。

任何想法如何使用NSPredicate实现此目的。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以先对日期数组进行排序,如:

NSArray *dateArraySorted = [inArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"Date" ascending:YES]]];

//Select the smallest date - if the date is greater than this then there is no point in checking against others and vice-versa.
NSDate *smallestDate = dateArraySorted[0];

从这里开始,我猜你知道如何创建谓词。

答案 1 :(得分:0)

我通过创建一个具有开始日期和结束日期的谓词来解决它,我查询模型以获得所提供范围之间的所有日期。

感谢您的帮助和建议。