Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果iCloud设置为不同步提醒,则无法创建本地日历(提醒)_Ios_Objective C_Eventkit - Fatal编程技术网

Ios 如果iCloud设置为不同步提醒,则无法创建本地日历(提醒)

Ios 如果iCloud设置为不同步提醒,则无法创建本地日历(提醒),ios,objective-c,eventkit,Ios,Objective C,Eventkit,在这里遇到了一个非常奇怪的问题,在我看来这是EventKit API的一个问题,我只想检查一下我没有做什么 测试用例1: 在应用程序的隐私中启用了提醒 该设备有一个iCloud帐户,但已设置为不同步提醒 我可以在Apple的“提醒”应用程序中创建本地提醒列表 问题-尝试使用EKSourceTypeLocal类型的源创建实体类型为EKENTITYTYPEREMENTER的新日历失败 测试用例2: 在应用程序的隐私中启用了提醒 该设备没有iCloud帐户 我可以在Apple的“提醒”应用程序中

在这里遇到了一个非常奇怪的问题,在我看来这是EventKit API的一个问题,我只想检查一下我没有做什么

测试用例1:

  • 在应用程序的隐私中启用了提醒
  • 该设备有一个iCloud帐户,但已设置为不同步提醒
  • 我可以在Apple的“提醒”应用程序中创建本地提醒列表
  • 问题-尝试使用EKSourceTypeLocal类型的源创建实体类型为EKENTITYTYPEREMENTER的新日历失败
测试用例2:

  • 在应用程序的隐私中启用了提醒
  • 该设备没有iCloud帐户
  • 我可以在Apple的“提醒”应用程序中创建本地提醒列表
  • 我可以通过EK API创建本地提醒列表
测试用例3:

  • 在应用程序的隐私中启用了提醒
  • 该设备具有iCloud帐户,并设置为同步提醒
  • 我可以在苹果的“提醒”应用程序中创建iCloud提醒列表
  • 我可以通过EK API创建iCloud提醒列表
我是疯了还是这是API的错误

干杯

代码如下:

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];
}
以下是NewCalendarListingSource的内容:

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]);

对于所有仍然存在此问题的用户,请检查您的
EKSourceType
,如果您的手机中存在此问题,请使用它。对于Swift,请尝试使用
EKSourceType.Exchange
。请注意,我已将Outlook/Exchange帐户同步到手机


我知道这很模糊,但当我使用
EKSourceType.Exchange
时,它对我很有用。(玩它)

我也有同样的疯狂行为。找不到任何合乎逻辑的解释。到目前为止你有进展吗?谢谢你指出这一点。这是一个非常糟糕的文件,我会很高兴找到一个解决方案,在所有情况下都能工作像这样的问题在iOS 9上已经解决了?至少,如果启用了iCloud但禁用了iCloud提醒,我可以创建本地日历。