WidgetKit tidak diperbarui
Oct 01 2020
Saya ingin Widget saya diperbarui misalnya setiap 5 detik. Saya tidak tahu mengapa itu tidak berhasil. Kode harus benar.
Kode yang Diperbarui:
func getTimeline(for configuration: ConfigurationIntent, in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
let currentDate = Date()
for _ in 0 ..< 5 {
let entryDate = Calendar.current.date(byAdding: .minute, value: 60, to: currentDate)!
let entry = SimpleEntry(date: entryDate, configuration: configuration, clubname: networkManager.clubName)
entries.append(entry)
}
let timeline = Timeline(entries: entries, policy: .atEnd)
completion(timeline)
}
Jawaban
1 Cagatay Oct 01 2020 at 03:57
Karena Anda menambahkan entri yang sama. Jika Anda mengubah nilai seperti contoh di bawah ini, itu akan disegarkan.
func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
var entries: [SimpleEntry] = []
// Generate a timeline consisting of five entries an hour apart, starting from the current date.
let currentDate = Date()
let chapter = getChapterWith(level: "1") // it is returned a array.
for index in 0 ..< chapter.count {
let entryDate = Calendar.current.date(byAdding: .second, value: index, to: currentDate)!
let entry = SimpleEntry(date: entryDate, chapter: chapter[index])
entries.append(entry)
}
let timelineDate = Calendar.current.date(byAdding: .second, value: 1, to: Date())!
let timeline = Timeline<SimpleEntry>(entries: entries, policy: .after(timelineDate))
completion(timeline)
}
func getChapterWith(level: String) -> [Chapter] {
return []
}
// Bab adalah sebuah struct, itu adalah variabel di SimpleEntry.
struct SimpleEntry: TimelineEntry {
let date: Date
let chapter: Chapter
}
Darkpaw Oct 03 2020 at 19:45
Anda menambahkan entri garis waktu untuk tanggal yang sama setiap saat:
let currentDate = Date() // currentDate = now
for _ in 0 ..< 5 {
let entryDate = Calendar.current.date(byAdding: .minute, value: 60, to: currentDate)! // entryDate is ALWAYS currentDate + 60 minutes
let entry = SimpleEntry(date: entryDate, configuration: configuration, clubname: networkManager.clubName)
entries.append(entry)
}
Sebagai gantinya, gunakan var dan perbarui itu:
var entryDate = Date()
for _ in 0 ..< 5 {
entryDate = Calendar.current.date(byAdding: .minute, value: 60, to: entryDate)!
let entry = SimpleEntry(date: entryDate, configuration: configuration, clubname: networkManager.clubName)
entries.append(entry)
}
Selalu Menjadi Ancaman: Mengapa Orang Berkulit Coklat dan Hitam Tidak Bisa Nyaman di Amerika Serikat
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'