问题描述
例如,我希望我的小部件每5秒更新一次。我不知道为什么它不起作用。代码应该正确。
更新代码:
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)
}
解决方法
因为您添加了相同的条目。如果像下面的示例一样更改值,则将刷新它。
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 []
}
//章节是一个结构,它是SimpleEntry中的一个变量。
struct SimpleEntry: TimelineEntry {
let date: Date
let chapter: Chapter
}
,
您每次都在同一日期添加时间线条目:
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)
}
相反,请使用var并对其进行更新:
var entryDate = Date()
for _ in 0 ..< 5 {
entryDate = Calendar.current.date(byAdding: .minute,to: entryDate)!
let entry = SimpleEntry(date: entryDate,clubname: networkManager.clubName)
entries.append(entry)
}