EKEventKit - 如何在批量提交后检索eventIdentifier?

时间:2015-10-23 13:26:03

标签: ios objective-c ekevent ekeventstore ekeventkit

我在保存了很多ekEvent后进行批量提交。我需要为每个EKEvent检索eventIdentifier。但它在提交后没有显示。我知道用

保存它
commit:NO 

不会生成eventIdentifier。但是在发出提交后肯定应该填写eventIdentifier。

基本上我的应用程序必须从Web服务检索一堆日历事件数据并将其保存在设备上。不幸的是,抛出的数据量最多可达1000个事件。

起初我正在使用它:

[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:YES error:&error];

但是,抛出到设备的数据量导致EKEventStore失败并偶尔重启设备。

最终我意识到它与我在EventStore中投掷的提交数量有关,并决定将提交设置为NO

[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:NO error:&error];

在循环结束时调用:

[self.ekEventStore commit:&error];

但是后来出现了eventIdentifier的问题。即使在循环结束时进行提交,每个事件也为eventIdentifier提供了一个nil值。每次我在eventStore上保存时,都没有发生这种情况。难道我做错了什么?我想在提交之后事件会为每个实例注册eventIdentifier。但事实并非如此。

此问题似乎也超过了here这个家伙。

由于

1 个答案:

答案 0 :(得分:1)

我终于弄明白了这个问题。

基本上我需要做的是在

中做所有事情
- (void)requestAccessToEntityType:(EKEntityType)entityType
                   completion:(EKEventStoreRequestAccessCompletionHandler)completion

方法

当我说出所有内容时,我的意思是当你正在进行获取,保存,编辑,编辑甚至公共事件到EventStore时,在完成块内完成。前提是已完成块的返回值设置为YES。

给出背景。我对requestAccess方法所做的只是请求访问,并根据给出的结果采取相应的行动,无论是否授予。然后我在方法之外做我的东西。

它对我有用。如果有人有不同的解决方案。请将它发布在这里,为了我和其他任何尚未解决此问题的人。感谢。

相关问题