ClockKit CLKComplicationDataSource 缺少向后事件

ClockKit CLKComplicationDataSource missing backward events

我写了一个支持复杂功能的测试应用程序

出于某种原因,钟面仅显示 1-2 个向后事件,但我可以在日志中看到当前日期之前的 10-15 个事件。 当我 return 一个用于前向事件的空数组时,我所有的后向事件开始显示在钟面上。

这是我的函数

func getTimelineEntriesForComplication(complication: CLKComplication, beforeDate date: NSDate, limit: Int, withHandler handler: (([CLKComplicationTimelineEntry]?) -> Void)) {

    var entries: [CLKComplicationTimelineEntry] = []

    let events = self.events.filter { (event: CEEvent) -> Bool in
        return date.compare(event.startDate) == .OrderedDescending
    }

    var lastDate = date.midnightDate

    for event in events {
        let entry = CLKComplicationTimelineEntry(date: lastDate, complicationTemplate: event.getComplicationTemplate(complication.family))

        if let endDate = event.endDate {
            lastDate = endDate
        } else {
            lastDate = event.startDate
        }

        entries.append(entry)

        if entries.count >= limit {
            break
        }
    }

    handler(entries)
}

P.S。我知道 'limit' 参数,它总是大于我数组的计数

P.P.S。对不起我的英语:)

我已经看到 watchOS 2.0.1 的相同行为,其中时间倒退最初 只显示两个较早的条目,即使数据源被请求并返回了 100 个条目。

启动后大约 15 分钟,开始出现更多关于倒退时间旅行的条目。启动后大约 30 分钟,所有 100 个先前的条目都出现了。

这不是因为我安排的任何更新,因为我的并发症的更新间隔是 24 小时。

似乎复杂化服务器优先添加前向条目,但推迟用所有后向时间旅行条目填充缓存。你得问苹果这是优化还是bug。

我不知道这是不是巧合,但我的时间线条目间隔 15 分钟。也许当并发症服务器更新并发症以显示新的时间线条目时,它还会添加更多早期的批处理条目?