4
#import <EventKit/EventKit.h>

我无法在默认 iOS 日历中创建活动。

EKEventStore *eventStore = [[EKEventStore alloc] init];
for (EKSource *source in eventStore.sources)
{
    if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal)
    {
        NSLog(@"I found it");
        break;
    }
}

从这里开始,它无法返回任何来源。当我构建和运行应用程序时,没有任何请求授予其访问默认日历的权限。

总而言之,我得到一个空数组:

[eventStore.sources count]

即使我尝试在不创建新日历的情况下添加事件(使用

[eventStore defaultCalendarForNewEvents]
4

2 回答 2

5

我想访问 EKEventStore 有问题,要检查权限,请尝试以下操作,

 EKEventStore *eventStore = [[EKEventStore alloc] init];
if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]){    
   [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
         {
             NSLog(@"GRANTED: %c", granted);
             for (EKSource *source in eventStore.sources)
             {
                 if (source.sourceType == EKSourceTypeCalDAV || source.sourceType == EKSourceTypeLocal)
                 {
                     NSLog(@"I found it");
                     break;
                 }
             }
         }];

}

希望对你有帮助..

于 2013-10-04T09:23:57.123 回答
2

我发现了问题:

[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    // TODO
}];

我必须手动请求权限,认为没有它的权限设置,我认为它已在 iOS 7.0.2 版本中修复。

于 2013-10-04T09:24:37.187 回答