コア データ アプリケーションを構築しており、日付に基づいてオブジェクトを取得する必要があります。これらのオブジェクトは、日付がグローバルな「selectedDate」と同じ日にある場合、UITableView に表示されます。これは、ユーザーが変更でき、おそらく頻繁に変更されます。このコードは以下のとおりです。
-(NSDate *)dateByMovingToEndOfDay:(NSDate *)date {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:23];
[parts setMinute:59];
[parts setSecond:59];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
-(NSDate *)dateByMovingToBeginningOfDay:(NSDate *)date {
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:0];
[parts setMinute:0];
[parts setSecond:0];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
私の質問は、どちらのアプローチがより効率的かということです:
ユーザーが選択した日付を変更するたびにフェッチ要求を実行し、述語を使用して日付が selectedDate と同じ日にあるオブジェクトのみを取得する
または
起動時にすべての managedObjects を取得し、それらを配列に格納してから、ユーザーが選択した日付を変更するたびに配列を並べ替え、正しいオブジェクトのみを含む新しい配列を作成します