0

時間コンポーネントがゼロになっている NSDate があります。

NSArray の各オブジェクトに NSDate メンバーがあります。

NSPredicate を使用してオブジェクトの配列を除外し、フィルターに使用している日付に一致するオブジェクトのみを保持したいと考えています。

キャッチは次のとおりです。オブジェクトの日付フィールドには、そこにいる必要がある時間コンポーネントがあります。

時刻ではなく日付部分のみに一致する述語フォーマット文字列を作成するにはどうすればよいですか。

日付を取り、時刻コンポーネントをゼロにして日付を与える静的ユーティリティ メソッドを作成しました。

このメソッドを述語文字列内で使用して、その日付を変換してから比較できますか?

コードは次のとおりです。

NSDate *startingDate = [MyUtilities  dateByRemovingTimeFromDate:self.currentEvent.associatedEvent.startDate];
NSDate *filterDate = [MyUtilities dateByAddingDays:_selectedRow toDate:startingDate];
NSArray *filteredArray = nil;
filteredArray = [_eventsList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"displayDate == %@",filterDate]];

on内で作成したメソッド dateByRemovingTimeFromDate: ofを使用できますか?MyUtilitiespredicate stringdisplayDate

4

1 に答える 1

2

日付範囲を使用して述語を作成できるため、時刻を比較する (または変更する) 必要はありません。日付範囲の開始日と終了日を計算するだけです (その後>=、開始日と<=終了日を使用します)。


NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"displayDate >= %@ AND displayDate <= %@", filterDate, nextDateAfterfilterDate];
于 2013-07-18T12:27:44.700 に答える