我的应用程序从远程服务器获取模型数据。此模型具有一个带有时代值的字段,根据当前时间是否超过时代,SwiftUI视图应显示不同的视图。
模型类似于以下内容:
我想要实现的是,当当前时间超过模型的
如何最好地实现这一点?我应该使用
模型类似于以下内容:
struct Order: Decodable {
var expireAt : Int
func isExpired() -> Bool {
let epoch = Int(Date().timeIntervalSince1970)
return expireAt < epoch
}
}
视图大致如下所示。
struct OrderView: View {
@EnvironmentObject var rs : RemoteService
var body: some View {
if rs.hasOrder() {
NavigationView {
VStack {
if rs.Order != nil && rs.Order!.isExpired() {
Text("Your order has expired")
} else {
Text("Your order has not expired.")
}
}
}
} else {
Text("You don't have order yet!")
}
}
}
我想要实现的是,当当前时间超过模型的
expireAt
阈值时,视图会自动更新。如何最好地实现这一点?我应该使用
Timer
还是 ObservableObject
,或者两者都用?例如,使用 ObservableObject
似乎需要将模型的类型从 Struct
更改为 Class
,而我不确定这是否符合我的要求。
ObservableObject
,它可以对该事件做出反应并更新其@Published
属性;使你的视图依赖于该属性。如何捕获此事件取决于你特定的应用程序设计。可以是在应用程序启动/恢复时设置的计时器。 - New Dev