2

我有一个NSMutableArray模型对象。

每个模型对象都有一个 startTimeNSDate类型的属性

我想NSPredicate用来过滤NSMutableArray. 我想要一个包含比现在旧的项目的数组和一个包含比现在新的项目的数组。

这是我使用的代码,但过滤后的数组是空的。我确实确保主数组中有项目正在从中过滤。

    NSPredicate *pastPredicate = [NSPredicate predicateWithFormat:@"(startTime < %@)", [NSDate date]];
    NSPredicate *futurePredicate = [NSPredicate predicateWithFormat:@"(startTime >= %@)", [NSDate date]];

    self.pastReservations = [self.reservations filteredArrayUsingPredicate:pastPredicate];
    self.futureReservations = [self.reservations filteredArrayUsingPredicate:futurePredicate];

如果你们知道我做错了什么,你们能告诉我吗?我认为我不应该使用内置类型的谓词块。

4

2 回答 2

0

为什么不这样:

NSDate* now = [NSDate date];

for(YourModelObject* obj in self.reservations) {

    NSDate* objectDate = obj.date; 

    //if negative, "now" is earlier, so >= 0 is past 
    if([now timeIntervalSinceDate:objectDate] >= 0) {
        [self.pastReservations addObject:obj];
    } else {
        [self.futureReservations addObject:obj];
    }

}
于 2012-12-19T23:11:35.240 回答
0

我的代码是正确的。之前的代码无法正常工作,并且 self.reservations 就像 Ramy Al Zuhouri 所说的那样是空的。

于 2013-01-07T21:48:11.987 回答