2012-11-07 68 views
3

我有一個事件(稱爲「測試事件」),它於11月6日上午2點開始,11月24日上午10點結束。當我嘗試通過指定一天的範圍,我可以找到所有的日子(11月6日,11月7日,...,11月23日)除了11月24日eventsMatchingPredicate在跨越多天的事件中找不到最後一個日期

下面的方法被調用每一個用戶選擇了新的一天的時間:

- (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日,即使在事件結束當天上午1​​0點?我正在運行iOS 6.0.1。

回答

2

不幸的是,我相信iOS代碼中存在一個錯誤。重現我的步驟:

  1. 創建完全按照您的基本 的iOS日曆應用上述測試活動。
  2. 在月視圖中看看它,你會注意到 那裏是沒有點/標記上11/24/2012 ...這對我來說表明有什麼可疑的事情發生。然後點擊第24個瓷磚,並注意事件IS實際上列出。
  3. 然後將您的活動改爲 全天活動(從您的開始時間有效地移除上午2點,從您的結束時間起上午10點有效地移除 )。
  4. 在月視圖中查看它,你會發現現在在11/24/2012有一個點/標記。

我不知道如何破解這個,但我可以驗證我的應用程序中的代碼與您的代碼相同。

+1

有趣......我會向蘋果提交一個bug。 –

+0

你知道他們是否確認了錯誤/修復了它嗎? – fumoboy007

+0

他們還沒有確定。 –

相關問題