我正在创建一个 watchOS 3 复杂功能,显示公共交通服务的出发时间。我创建了一个带有数组的数据模型,该数组包含Train
带有stationName
(字符串)和departureTime
(NSDate)的对象。
我已经实现了 getCurrentTimelineEntry() 方法,并且条目显示在手表上。问题是手表只显示上一个条目。例如,我有以下出发时间:
Train(startStation: "Station name", endStation: "Station name", departureTime: stringToDate(dateString: "2016-06-20 14:00")),
Train(startStation: "Station name", endStation: "Station name", departureTime: stringToDate(dateString: "2016-06-20 14:30")),
Train(startStation: "Station name", endStation: "Station name", departureTime: stringToDate(dateString: "2016-06-20 14:45")),
如果当前时间为 14:10,则手表上仍显示第一个条目(时间为 14:00)。直到当前时间是 14:30,才会显示该条目。如果当前时间是 14:10,我想在手表上查看 14:30 的出发时间。
任何人都可以帮助我或指出正确的方向吗?
func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void)) {
if let train = dataProvider.getTrains().nextTrain() {
handler(timelineEntryForTrain(train: train))
} else {
handler(nil)
}
}
extension Array where Element : OnRailable {
func nextTrain() -> Element?{
let now = NSDate()
for d in self {
if now.compare(d.departureTime) == .orderedAscending{
return d
}
}
return nil
}
}