我在保存了很多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这个家伙。
由于
答案 0 :(得分:1)
我终于弄明白了这个问题。
基本上我需要做的是在
中做所有事情- (void)requestAccessToEntityType:(EKEntityType)entityType
completion:(EKEventStoreRequestAccessCompletionHandler)completion
方法
当我说出所有内容时,我的意思是当你正在进行获取,保存,编辑,编辑甚至公共事件到EventStore时,在完成块内完成。前提是已完成块的返回值设置为YES。
给出背景。我对requestAccess方法所做的只是请求访问,并根据给出的结果采取相应的行动,无论是否授予。然后我在方法之外做我的东西。
它对我有用。如果有人有不同的解决方案。请将它发布在这里,为了我和其他任何尚未解决此问题的人。感谢。