11 月 6 日の午前 2 時に開始し、11 月 24 日の午前 10 時に終了するイベント (「テスト イベント」と呼ばれる) があります。1 日の範囲を指定してイベントを検索しようとすると、すべての日を検索できます。 (11月6日、11月7日、…、11月23日)11月24日を除く。
次のメソッドは、ユーザーが新しい日を選択するたびに呼び出されます。
- (void)loadItemsFromDate:(NSDate *)fromDate toDate:(NSDate *)toDate
{
NSLog(@"loadItemsFromDate");
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSLog(@"%@ to %@", [dateFormatter stringFromDate:fromDate], [dateFormatter stringFromDate:toDate]);
// Create the predicate from the event store's instance method
NSPredicate *predicate = [self.store predicateForEventsWithStartDate:fromDate
endDate:toDate
calendars:nil];
NSLog(@"predicateFormat: %@", [predicate predicateFormat]);
// Fetch all events that match the predicate
self.currentDayEvents = [self.store eventsMatchingPredicate:predicate];
NSLog(@"single day events:");
for(EKEvent *event in self.currentDayEvents)
{
NSLog(@"title: %@, start: %@, end: %@", event.title, [dateFormatter stringFromDate:event.startDate], [dateFormatter stringFromDate:event.endDate]);
}
NSLog(@"\n");
}
ユーザーが 11 月 6 日を選択したときのログを次に示します (「テスト イベント」を見つけることができます)。
loadItemsFromDate
11/6/12, 12:00 AM to 11/6/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/6/12, 12:00 AM; end:11/6/12, 11:59 PM; cals:(null)
single day events:
title: Vote, start: 11/6/12, 12:00 AM, end: 11/6/12, 11:59 PM
title: Test Event, start: 11/6/12, 2:00 AM, end: 11/24/12, 10:00 AM
11 月 7 日から 22 日まではすべて、11 月 23 日のこのログに似ています (「テスト イベント」を見つけることができます)。
loadItemsFromDate
11/23/12, 12:00 AM to 11/23/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/23/12, 12:00 AM; end:11/23/12, 11:59 PM; cals:(null)
single day events:
title: Test Event, start: 11/6/12, 2:00 AM, end: 11/24/12, 10:00 AM
11 月 24 日のログは次のとおりです (「テスト イベント」が返されないため、期待どおりに動作しません)。
loadItemsFromDate
11/24/12, 12:00 AM to 11/24/12, 11:59 PM
predicateFormat: EKEventPredicate start:11/24/12, 12:00 AM; end:11/24/12, 11:59 PM; cals:(null)
single day events:
11 月 24 日の午前 10 時にイベントが終了するのに、なぜ 11 月 24 日のイベントが見つからないのですか? iOS 6.0.1 を実行しています。