1

我写的并发症一个测试应用程序支持ClockKit CLKComplicationDataSource缺失落后的事件

出于某种原因,钟面仅呈现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) 
} 

附:我知道“限制”参数,它总是大于我的阵列数

P.P.S.对不起,关于我的英语:)

回答

1

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

发布后约15分钟,更多条目开始出现在向后的时间旅行中。发布后约30分钟,全部100个参赛作品均已出场。

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

似乎复合服务器优先考虑添加转发条目,但推迟使用所有后退时间旅行条目填充缓存。你不得不问苹果是优化还是错误。

我不知道这是否是巧合,但我的时间线条目间隔15分钟。也许当复杂服务器更新复杂功能以显示新的时间线条目时,它还会添加更多批次的更早条目?