在保存了大量ekEvents之后,我正在进行批提交。我需要为每个eventIdentifier检索EKEvent。但在承诺之后就没表现出来了。我知道用
commit:NO 不会产生eventIdentifier。但是,在发出提交之后,eventIdentifier肯定会被填满。
基本上,我的应用程序必须从web服务中检索大量Calendar事件数据,并将其保存在设备上。不幸的是,抛出的数据量最多可达1000个事件。
一开始我用的是:
[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:YES error:&error];但是,向设备抛出的数据量会导致EKEventStore在偶尔重启设备时失败。
最后,我意识到这与我在EventStore上抛出的提交量有关,并决定将提交设置为否
[self.ekEventStore saveEvent:ekEvent span:EKSpanFutureEvents commit:NO error:&error];在循环结束时,调用:
[self.ekEventStore commit:&error];但是,eventIdentifier的问题出现了。即使在循环结束时执行提交,每个事件都为eventIdentifier提供了一个零值。当我每次在eventStore上保存数据时,这种情况从未发生过。我做错了什么吗?我认为在提交之后,事件将为每个实例注册eventIdentifier。但事实并非如此。
而且,这个问题在here上似乎也很普遍。
谢谢
发布于 2015-12-10 06:00:03
我终于解决了这个问题。
基本上,我需要做的是做所有的事情在里面:
- (void)requestAccessToEntityType:(EKEntityType)entityType
completion:(EKEventStoreRequestAccessCompletionHandler)completion方法。
当我什么都说的时候,我的意思是当你在EventStore上做一个提取、保存、编辑、编辑甚至逗号的时候,在完成块中这样做。如果已授予的完成块的返回值设置为“是”。
给出背景。我对requestAccess方法所做的只是请求访问,并相应地处理所给出的结果,不管它是否被授予。然后我在方法之外做我的事情。
对我起作用了。如果有人有不同的解决方案。请把它张贴在这里,为了我和其他任何人,谁还没有解决这个问题。谢谢。
https://stackoverflow.com/questions/33303497
复制相似问题