首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WidgetKit未更新

WidgetKit未更新
EN

Stack Overflow用户
提问于 2020-09-30 23:42:00
回答 2查看 907关注 0票数 1

例如,我希望我的Widget每5秒更新一次。我不知道为什么它不工作。代码应该是正确的。

更新的代码:

代码语言:javascript
复制
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)
    }
EN

回答 2

Stack Overflow用户

发布于 2020-10-01 04:57:03

因为你添加了相同的条目。如果您像下面的示例那样更改该值,它将被刷新。

代码语言:javascript
复制
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中的一个变量。

代码语言:javascript
复制
struct SimpleEntry: TimelineEntry {
    let date: Date
    let chapter: Chapter
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-03 20:45:23

您每次都会为同一日期添加一个时间线条目:

代码语言:javascript
复制
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并更新该变量:

代码语言:javascript
复制
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64141119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档