Não é possível criar o EKCalendar local (Lembretes) se o iCloud estiver configurado para não sincronizar Lembretes

Atingir um problema muito estranho aqui, o que me parece ser um problema com a API do EventKit e só quero verificar se não estou fazendo nada.

Caso de teste 1:

Lembretes estão ativados em Privacidade para o aplicativoO dispositivo tem uma conta do iCloud, mas está configurado para não sincronizar lembretesPosso criar umlocal lista de lembretes no aplicativo "Lembretes" da ApplePROBLEMA - Tentar criar um novo calendário do tipo de entidade EKEntityTypeReminder com uma fonte do tipo EKSourceTypeLocal falha

Caso de teste 2:

Lembretes estão ativados em Privacidade para o aplicativoO dispositivo não tem uma conta do iCloudPosso criar umlocal lista de lembretes no aplicativo "Lembretes" da AppleEu posso criar uma lista de lembretes locais via API EK

Caso de teste 3:

Lembretes estão ativados em Privacidade para o aplicativoO dispositivo tem uma conta do iCloud e está configurado para sincronizar lembretesPosso criar umiCloud lista de lembretes no aplicativo "Lembretes" da AppleEu posso criar uma lista de lembretes do iCloud via API EK

Eu estou ficando louco ou isso é um bug com a API?

Felicidades!

Aqui está o 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];
}

E este é o conteúdo 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]);

questionAnswers(1)

yourAnswerToTheQuestion