我有一个NSMutableArray
的Model对象。
每个Model对象的startTime属性为NSDate
type
我想使用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];
如果你知道我做错了什么,你能告诉我吗?我不认为我应该使用内置类型的谓词块。
答案 0 :(得分: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];
}
}
答案 1 :(得分:0)
我的代码是正确的。之前的代码没有正常工作,而且自我保留是空的,就像Ramy Al Zuhouri说的那样。