写一个简单的NSpredicate - 逻辑问题

时间:2012-04-25 00:38:34

标签: iphone objective-c nspredicate

我有一个Person个对象。此person对象具有以下属性;

Name
StartDate
EndDate

我将此Person个对象保存到array。此数组可能包含多个100 person个对象。

以下是该数组中person个对象的示例;

John, Tue Feb 22, Thr Mar 30
Jack, Wed Mar 09, Fri Apr 21
Jack, Thu Mar 19, Fri Dec 20
Jack, Tue Jan 08, Fri Apr 26 etc..

现在我需要提供一个日期,例如Wed 29 Mar,我需要检查它是否在{{1}数组的StartDateEndDate范围内对象。我怎样才能做到这一点 ?我的工作如下,但它不起作用(它给出了不正确的结果)

persons

我也尝试了以下方法,但它也给出了不正确的结果(从SO帖子中取出);

NSPredicate *datePred = [NSPredicate predicateWithFormat:@"StartDate>= %@ && EndDate<= %@",givenDate,givenDate];
            resultArray = [arrayContainingAllPersonObjects filteredArrayUsingPredicate:datePred ];

我不知道造成这种情况的原因,帮助

2 个答案:

答案 0 :(得分:0)

尝试使用'%@',如StartDate = '%@' && EndDate ='%@'

UPD:

尝试

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"StartDate = '%@', startDateHere]];

答案 1 :(得分:0)

是StartDate和EndDate NSDate对象吗?

我建议给出关于谓词的这篇文章。它帮助我将过滤和搜索代码减少到几行:http://www.cocoanetics.com/2010/03/filtering-fun-with-predicates/