1

我编写了一个支持并发症的测试应用程序

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

这是我的功能

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)
}

PS我知道'limit'参数并且它总是大于我的数组的计数

PPS 对不起我的英语:)

4

1 回答 1

1

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

发射后大约 15 分钟,开始出现更多的倒退时间旅行条目。发布后大约 30 分钟,所有 100 个之前的条目都出现了。

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

似乎复杂服务器优先添加前向条目,但推迟使用所有后向时间旅行条目填充缓存。您必须询问 Apple 是优化还是错误。

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

于 2015-12-02T09:21:54.213 回答