2013-07-15 40 views
0

我想从实体中提取对象,其实体数据库中提供的startDateendDate大于日期 。我目前正在使用IN谓词如下NDSredicate with IN for NSDate

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

但我认为它会检查等于日期在哪里,我想这日期是更大的。

任何想法如何实现这与NSPredicate

在此先感谢。

+0

你的意思是“startDate大于数组中的日期”?它应该大于数组中的所有值吗? –

+2

为什么你有一个日期数组来检查,如果'startDate'和'endDate'必须大于它们全部?难道你不能只用最大的日期,并用'%K>%@'与它比较吗? – Greg

+0

并非所有值都大于至少一个值 –

回答

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]; 

从这里,我想你知道如何创建谓词。