我有一个关于EKEventEditViewController的问题,同时通过我的应用添加任何事件。 当我第一次安装应用程序时,我无法添加事件,并且设置了没有日历事件的问题,并附带“Error Domain = EKErrorDomain Code = 1”。 只有在第一次使用不同的捆绑标识符打开应用程序时,它才会出现。 当我下次安装应用程序时,它将完美运行,我可以添加该事件。 我还在添加事件之前检查了requestAccessToEntityType:completion的条件。 我被困在这一点,并尝试通过谷歌搜索找到的每一种方法。
- 提前谢谢。
答案 0 :(得分:0)
当应用第一次要求权限时,提示不会阻止应用,添加事件的正确方法是在完成块内
以下是一个例子:
EKEventStore *eventStore = [[EKEventStore alloc] init];
[eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// Event creation code HERE!!! (for the first run only) this block will not be executed for the next runs
});
}];
很可能您的事件创建代码位于 requestAccessToEntityType 函数之后,而不是在完成块之内。
您无法首次创建事件,因为只有在执行完成块时才允许访问。
一旦您为下次运行授予访问权限,就允许访问权限,并且所有访问都按预期工作。