【问题标题】:EKReminder error when creating on OS X: No calendar has been set在 OS X 上创建时出现 EKReminder 错误:未设置日历
【发布时间】:2014-01-09 01:03:07
【问题描述】:

我有一段代码尝试保存通用提醒,在 OS X 10.8 及更高版本中使用 EventKit 框架。这是我的代码 sn-p:

NSLog(@"Creating reminder.");
EKEventStore *eventStore = [[EKEventStore alloc] initWithAccessToEntityTypes:EKEntityMaskReminder];
NSLog(@"Auth status: %lu", [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder]);

[eventStore requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error) {
    NSLog(@"Granted: %d Error: %@", granted, error);
    if (granted) {
        EKReminder *reminder = [EKReminder reminderWithEventStore:eventStore];
        reminder.title = @"My Reminder";
        EKCalendar *reminderCalendar = [EKCalendar calendarForEntityType:EKEntityTypeReminder eventStore:eventStore];
        NSLog(@"Using EKCalendar: %@", reminderCalendar);
        reminder.calendar = reminderCalendar;

        NSError *commitError = nil;
        if (![eventStore saveReminder:reminder commit:YES error:&commitError] || commitError) {
            NSLog(@"An error occurred committing the reminder: %@", commitError);
        } else {
            NSLog(@"Reminder created successfully.");
        }
    }
}];

这是我看到的输出:

2014-01-08 19:56:21.182 MyApp[6073:303] Creating reminder.
2014-01-08 19:56:21.358 MyApp[6073:303] Auth status: 3
2014-01-08 19:56:21.358 MyApp[6073:3423] Granted: 1 Error: (null)
2014-01-08 19:56:21.359 MyApp[6073:3423] Using EKCalendar: EKCalendar <0x9c430>, calendarIdentifier:9BD66DA9-014D-4918-849A-1D6763994511, allowEvents:0, allowReminders:1, allowsContentModifications:1, isSubscribed:0, isDeletable:1, isRenameable:1, isShareable:0, defaultOrganizerIsMeForNewItems:0
2014-01-08 19:56:21.366 MyApp[6073:3423] An error occurred committing the reminder: Error Domain=EKErrorDomain Code=1 "No calendar has been set." UserInfo=0x60000067d900 {NSLocalizedDescription=No calendar has been set.}

然而,尽管有错误消息,EKCalendar 已成功创建/访问,设置在 EKReminder 对象上。

在 iOS 上使用 EventKit 时,我发现的唯一其他类似资源出现此错误,其中获取访问权限的方法略有不同。

根据此 Apple 文档:https://developer.apple.com/library/ios/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingReminders/ReadingAndWritingReminders.html

您可以使用reminderWithEventStore: 类创建提醒 方法。标题和日历属性是必需的。日历 提醒是与其分组的列表。

但我一定是做错了什么。在我的App Sandbox/App Data 权限下,为了安全起见,我同时选择了CalendarContacts,但错误似乎与权限无关。

【问题讨论】:

    标签: macos sandbox eventkit


    【解决方案1】:

    而不是使用:

    EKCalendar *reminderCalendar = [EKCalendar calendarForEntityType:EKEntityTypeReminder eventStore:eventStore];
    NSLog(@"Using EKCalendar: %@", reminderCalendar);
    reminder.calendar = reminderCalendar;
    

    我能够使用以下方法成功创建EKReminder

    reminder.calendar = [eventStore defaultCalendarForNewReminders];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2016-02-09
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多