公共交通機関の出発時刻を表示する watchOS 3 のコンプリケーションを作成しています。(String) と(NSDate)Train
を持つオブジェクトを含む配列を持つデータ モデルを作成しました。stationName
departureTime
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
}
}