eventsMatchingPnetworkingicate no encuentra la última date en el evento que abarca varios días

Tengo un evento (llamado "Evento de testing") que comienza a las 2 de la mañana del 6 de noviembre y termina a las 10 de la mañana del 24 de noviembre. Cuando trato de encontrar el evento especificando un range de un día, puedo encontrarlo todos los días (6 de noviembre, 7 de noviembre, …, 23 de noviembre) excepto el 24 de noviembre .

El siguiente método se llama cada vez que el usuario elige un nuevo día:

- (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 pnetworkingicate from the event store's instance method NSPnetworkingicate *pnetworkingicate = [self.store pnetworkingicateForEventsWithStartDate:fromDate endDate:toDate calendars:nil]; NSLog(@"pnetworkingicateFormat: %@", [pnetworkingicate pnetworkingicateFormat]); // Fetch all events that match the pnetworkingicate self.currentDayEvents = [self.store eventsMatchingPnetworkingicate:pnetworkingicate]; 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"); } 

Aquí está el logging cuando el usuario elige el 6 de noviembre (puede encontrar "Test Event"):

 loadItemsFromDate 11/6/12, 12:00 AM to 11/6/12, 11:59 PM pnetworkingicateFormat: EKEventPnetworkingicate 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 

Del 7 al 22 de noviembre todos tienen un aspecto similar a este logging, que es para el 23 de noviembre (puede encontrar "Evento de Prueba"):

 loadItemsFromDate 11/23/12, 12:00 AM to 11/23/12, 11:59 PM pnetworkingicateFormat: EKEventPnetworkingicate 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 

Y aquí está el logging para el 24 de noviembre (no funciona como se espera, ya que no devuelve el "Evento de testing"):

 loadItemsFromDate 11/24/12, 12:00 AM to 11/24/12, 11:59 PM pnetworkingicateFormat: EKEventPnetworkingicate start:11/24/12, 12:00 AM; end:11/24/12, 11:59 PM; cals:(null) single day events: 

¿Por qué no encuentra el evento para el 24 de noviembre a pesar de que el evento finaliza a las 10 de la mañana de ese día? Estoy ejecutando iOS 6.0.1.

Creo que hay un error en el código de iOS por desgracia. Mis pasos para reproducir:

  1. Cree su evento de testing exactamente como describió anteriormente en la aplicación básica de calendar de iOS.
  2. Míralo en la vista de Mes y notarás que NO hay ningún punto / marcador el 11/24/2012 … lo que para mí indica que algo sospechoso está sucediendo. Luego click el mosaico 24 y observe que el evento ESTÁ realmente en la list.
  3. Luego, cambia tu evento a un evento de todo el día (eliminando de manera efectiva a las 2 de la madrugada y a las 10 de la madrugada).
  4. Mírelo en la vista de Mes y notará que ahora hay un punto / marcador el 11/24/2012.

No estoy seguro de cómo piratear esto todavía, pero puedo verificar que el código en mi aplicación muestre el mismo problema que el tuyo.