No se puede crear EKCalendar local (Recordatorios) si iCloud está configurado para no sincronizar Recordatorios

Presentar un problema muy extraño aquí, que me parece que es un problema con la API de EventKit y solo quiero comprobar que no estoy haciendo nada.

Caso de prueba 1:

Los recordatorios están habilitados en Privacidad para la aplicación.El dispositivo tiene una cuenta de iCloud, pero está configurado para no sincronizar los recordatoriosPuedo crear unlocal Lista de recordatorios en la aplicación 'Recordatorios' de ApplePROBLEMA: el intento de crear un nuevo calendario de tipo de entidad EKEntityTypeReminder con una fuente de tipo EKSourceTypeLocal falla

Caso de prueba 2:

Los recordatorios están habilitados en Privacidad para la aplicación.El dispositivo no tiene cuenta de iCloud.Puedo crear unlocal Lista de recordatorios en la aplicación 'Recordatorios' de ApplePuedo crear una lista de recordatorios locales a través de la API EK

Caso de prueba 3:

Los recordatorios están habilitados en Privacidad para la aplicación.El dispositivo tiene una cuenta de iCloud y está configurado para sincronizar recordatoriosPuedo crear uniCloud Lista de recordatorios en la aplicación 'Recordatorios' de ApplePuedo crear una lista de recordatorios de iCloud a través de la API EK

¿Me estoy volviendo loco o es un error con la API?

¡Aclamaciones!

Aquí está el código:

EKCalendar *remindersList = nil;
NSString *remindersListIdent = [[NSUserDefaults standardUserDefaults] objectForKey:kReminderListIdentDefaultsKey];

if(remindersListIdent) {
    remindersList = [store calendarWithIdentifier:remindersListIdent];

    if(remindersList) {
        // has valid reminders list so save reminder and return (don't run rest of function)
        [self saveReminder:reminder toCalendar:remindersList withTypeLabel:reminderTypeLabel];
        return;
    }
}

NSArray *currentCalendars = [store calendarsForEntityType:EKEntityTypeReminder];
for(EKCalendar *cal in currentCalendars) {
    if([[cal title] isEqualToString:@"My App Name"]) {
        remindersList = cal;

        [[NSUserDefaults standardUserDefaults] setObject:[remindersList calendarIdentifier] forKey:kReminderListIdentDefaultsKey];
        [[NSUserDefaults standardUserDefaults] synchronize];
        [self saveReminder:reminder toCalendar:remindersList withTypeLabel:reminderTypeLabel];
        return;
    }
}

EKSource *localSource = nil;
for (EKSource *source in store.sources) {
    if (source.sourceType == EKSourceTypeCalDAV && [source.title isEqualToString:@"iCloud"]) {
        localSource = source;
        break;
    }
}
if(localSource) {
    remindersList = [self newCalendarListInSource:localSource];
}

if(!remindersList) {
    for (EKSource *source in store.sources) {
        if (source.sourceType == EKSourceTypeLocal) {
            localSource = source;
            remindersList = [self newCalendarListInSource:localSource];
            if(remindersList) {
                break;
            }
        }
    }
}

if(!remindersList) {
    dispatch_async(dispatch_get_main_queue(), ^{
        // show error message
    });
}
else {
    [[NSUserDefaults standardUserDefaults] setObject:[remindersList calendarIdentifier] forKey:kReminderListIdentDefaultsKey];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [self saveReminder:reminder toCalendar:remindersList withTypeLabel:reminderTypeLabel];
}

Y este es el contenido de newCalendarListInSource:

EKCalendar *remindersList;

remindersList = [EKCalendar calendarForEntityType:EKEntityTypeReminder eventStore:store];
remindersList.source = localSource;
[remindersList setTitle:@"My App Name"];
NSError *listCreateError = nil;
[store saveCalendar:remindersList commit:YES error:&listCreateError];

if(!listCreateError) {
    return remindersList;
}
else {
    NSLog(@"Failed to create reminders list with error: %@", [listCreateError localizedDescription]);

Respuestas a la pregunta(1)

Su respuesta a la pregunta