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「制限」パラメーターについて知っていますが、常に配列の数よりも大きくなります

PPS私の英語でごめんなさい:)

4

1 に答える 1

1

データソースが要求されて 100 エントリが返されたにもかかわらず、逆方向にタイム トラベルすると最初は 2 つの以前のエントリしか表示されないという、watchOS 2.0.1 の同じ動作を見てきました。

打ち上げから約 15 分後、逆タイムトラベルのエントリがさらに表示され始めました。打ち上げから約 30 分後、100 件の以前のエントリがすべて存在していました。

私のコンプリケーションの更新間隔は 24 時間であるため、これは私がスケジュールした更新によるものではありません。

コンプリケーション サーバーは前方エントリの追加を優先しているように見えますが、すべての後方タイム トラベル エントリのキャッシュへの入力は延期されています。最適化なのかバグなのか、Apple に問い合わせる必要があります。

これが偶然かどうかはわかりませんが、私のタイムライン エントリは 15 分間隔になっています。おそらく、コンプリケーション サーバーが新しいタイムライン エントリを表示するようにコンプリケーションを更新するときに、バッチ化された以前のエントリもさらに追加するのでしょうか?

于 2015-12-02T09:21:54.213 に答える