2

私はNSMutableArrayModel オブジェクトの を持っています。

NSDate各モデル オブジェクトには、タイプの startTime プロパティがあります。

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

私のコードは正しかった。Ramy Al Zuhouriが言ったように、それが正しく機能せず、self.reservationsが空だった前のコードがありました。

于 2013-01-07T21:48:11.987 に答える