3

在我的应用程序中,我正在显示 EKEvents 列表,并且我想在 UITableView 中显示一个月的所有事件,每个部分都包含相应的日期。好吧,这行得通,我得到了我需要的所有数据,但是获取速度很慢。

问题在于跨越多天的事件。

  • 假设我从 11 月 10 日到 11 月 17 日去度假。
  • 我的搜索谓词有一个 11 月 1 日的 startDate 和一个 11 月 30 日的 endDate。
  • 我做了一个 enumerateEventsMatchingPredicate 或 eventsMatchingPredicate,无论如何,两者都很慢。

作为回报,我得到了一个数组作为回报,所有活动都在 11 月举行,还有我的假期。但我的假期只是一个 EKEvent 对象。因此,如果我想显示事件的每月列表视图,它只会在 11 月 10 日出现一次,但为了清楚起见,我会在它发生的每一天、10 日、11 日、... 17 日显示它。

所以我要做的是,在一个月内迭代每一天并进行一次获取:-/ 这样我可以获得在特定日期发生的正确数量的事件,但是......感觉太复杂了。

我已经将 fetch 放入 dispatch_async 中,因此 fetch 不会阻塞 UI,并且在 fetch 完成后,tableView 会重新加载并重新绘制单元格。但这仍然需要时间。没有用户友好的时间。

您如何执行这些搜索?您对如何加快搜索有任何提示,也许是一些代码片段,或者可以为我指明正确的方向!?

我的问题清楚吗?:-/

谢谢,-马丁。

4

1 回答 1

0

获取速度很慢,尤其是在有很多重复事件的情况下。我在我的应用程序中所做的是只获取一次,并将全天多跨天事件解析为块。我抽象了事件:我创建了“日期”类,它具有 NSString 属性,可用作表格视图中的部分标题,其 ivars 之一是具有匹配“事件”的数组。“事件”不是 EKEvents,而是我的类,我将所需的属性从 EKEvents 复制到该类。从跨越一整天的多天 EKEvent 我创建相应的“事件”。解析速度非常快 - 从获取的重复 EKEvents 中获取属性时会变慢。

于 2011-12-01T18:58:55.530 回答