在 Swift 中使用 @observable,我想使用计时器定期刷新 ObservedObject。我该怎么做呢?
Posted
技术标签:
【中文标题】在 Swift 中使用 @observable,我想使用计时器定期刷新 ObservedObject。我该怎么做呢?【英文标题】:Using @observable in Swift, I want to periodically refresh the ObservedObject using a timer. How do I do this? 【发布时间】:2020-06-28 09:32:12 【问题描述】:我正在编写一个从网站提取数据并使用 SwiftUI 显示的应用程序。
我的主视图有一个@ObservedObject
,它的类型为DataStore()
,并在视图中使用:
struct ContentView: View
@ObservedObject var store = DataStore()
var body: some View
List(store.zones) zone in
...
数据模型定义为:
class DataStore: ObservableObject
@Published var zones: [SonosZone] = []
init()
getZones()
func getZones()
Api().getZones (zones) in
self.zones = zones
我想每 30 秒拨打一次getZones()
。我该怎么做?
我猜我在某处使用了这样的代码,但我不知道该放在哪里,也不知道如何调用闭包中的函数:
_ = Timer.scheduledTimer(withTimeInterval: 30, repeats: true) _ in
getZones()
【问题讨论】:
【参考方案1】:我想通了。
class DataStore: ObservableObject
@Published var zones: [SonosZone] = []
init()
getZones()
_ = Timer.scheduledTimer(withTimeInterval: 30, repeats: true) _ in
self.getZones()
func getZones()
Api().getZones (zones) in
self.zones = zones
【讨论】:
以上是关于在 Swift 中使用 @observable,我想使用计时器定期刷新 ObservedObject。我该怎么做呢?的主要内容,如果未能解决你的问题,请参考以下文章
rxswift observable 的简单 swift 变量
.observe firebase 方法 swift4 后代码未执行
如何在 Swift 上同步或使 Observable 等待?