あなたの述語は問題ないようです。
ただし、返される結果がゼロである理由は、日付が完全に同じではない可能性があります。
例えば:
05/04/2012 13:37:00
05/04/2012 13:37:01
これら 2 つの値は完全に同じではないため、 と一致しません。
時刻だけでなく日付(日、月、年)も確認したいですか?
日付のみを確認したい場合は、開始日と終了日を作成し、ユーザーが選択した日付を参照フレームとして使用してそれらを比較する必要があります。
これに似たものは、00:00:00 の日付と時刻を作成する必要があります。
//gather current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
//gather date components from date
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
//set date components
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
//return date relative from date
return [calendar dateFromComponents:dateComponents];
時、分、秒を 23:59:59 に設定して別の日付を作成し、ユーザーが選択した日付がこれらの範囲内にあることを確認します。
[NSPredicate predicateWithFormat:@"date BETWEEN %@", [NSArray arrayWithObjects:startOfDay, endOfDay, nil]]