0

我有一个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,我需要检查它是否在对象数组的范围StartDate内。我怎样才能做到这一点 ?我的工作如下,但它不起作用(它给出了不正确的结果)EndDatepersons

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

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

NSPredicate *greaterThanPredicate = [NSPredicate predicateWithFormat:@"StartDate<= %@", providedDate"];
NSPredicate *lessThanPredicate = [NSPredicate predicateWithFormat:@"EndDate>= %@", ProvidedDate"];
NSPredicate *betweenPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:greaterThanPredicate, lessThanPredicate, nil]];

我不知道是什么原因造成的,求助

4

2 回答 2

0

StartDate 和 EndDate 是 NSDate 对象吗?

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

于 2012-04-25T13:01:46.990 回答
0

尝试使用 '%@' 之类的StartDate = '%@' && EndDate ='%@'

升级版:

尝试

NSPredicate *predicate = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"StartDate = '%@', startDateHere]];
于 2012-04-25T11:37:59.417 回答