Problema de synchronization del calendar de iCloud al crear el calendar desde la aplicación

Tratando de implementar la synchronization de iCloud Calendar para iOS. La idea es crear un nuevo calendar desde mi aplicación y sincronizarlo con iCloud cuando la synchronization de iCloud esté activada. Para get la fuente correspondiente estoy usando el siguiente código:

EKSource * localSource = nil;

para (fuente EKSource * en self.eventStore.sources) {if (fuente.sourceType == EKSourceTypeCalDAV && [fuente.título isEqualToString: @ "iCloud"]) {localSource = fuente; descanso; }

}

Luego, cree un calendar en esa fuente y guarde.

Cuando la synchronization de iCloud está activada y la synchronization de calendar también está activada para iCloud desde iPhone-> Configuración-> iCloud-> Calendario Funciona bien. Después de desactivar la synchronization del calendar de las configuraciones mencionadas anteriormente, en teoría no debería permitir crear el calendar en esa tienda más. Pero en realidad, incluso en ese caso, permite get la tienda iCloud correspondiente de mi aplicación y crear / save un nuevo calendar. Después de crear un nuevo calendar, no se muestra en la list de calendars de iPhone. Pero cuando inicia session en la interfaz web de iCloud, puede ver muchos calendars con el mismo nombre que acaba de agregar. El número de calendars con ese nombre es cada vez más grande. Las costuras tienen un problema de bucle infinito en la synchronization del calendar para iCloud. Hasta ahora las costuras como si fuera un problema de iOS y no pudieron encontrar ningún informe sobre eso en ninguna parte.

No estoy seguro de si pensaste esto, si lo hiciste, publica tu solución 🙂

Pero parece ser un error: acabo de verificar iCal en mi Mac y está cargado con calendars duplicates.

Solo para descifrarlo, pero algún código bruto que creo que tengo funcionando es crear un Calendario en el EKSource y luego verificar ese Calendario.

Algo como esto:

-(BOOL)testCal { BOOL cal = 0; NSUInteger counter = 1; for (EKCalendar *thisCalendar in [[DGEK eventStore]calendars] ){ NSLog(@"%@", thisCalendar.title); if ([thisCalendar.title isEqualToString:@"YourCalName"]) { cal = YES; return cal; } counter++; } return cal; } 

Creo que eso funciona. Solo hago algunas testings más en este momento.

Si el Cal no existe, obtendré la fuente pnetworkingeterminada con algo como esto:

 source = [[[self eventStore] defaultCalendarForNewEvents] source]; 

Espero que ayude.