【发布时间】:2020-11-27 17:17:56
【问题描述】:
我不知道如何解决这个错误。
如果我删除 @Published,它会正确编译所有内容,但我无法实时查看单元格中的数据。阅读我看到我需要带有@Published的var
import SwiftUI
import Combine
class TimeModel: Codable, Identifiable, ObservableObject {
@Published var id: UUID = UUID()
@Published var nome : String
@Published var time : String
func aggiornaUI() {
DispatchQueue.main.async {
self.objectWillChange.send()
}
}
init(nome: String, time: String) {
self.nome = nome
self.time = time
}
}
更新:好的,谢谢我现在检查,但错误仍然存在
HStack {
Text("\(timeString(from: Int(TimeInterval(remainingSeconds))))")
.onReceive(timer) { _ in
if isCounting && remainingSeconds > 0 {
remainingSeconds -= 1
}
}
错误:
实例方法 'onReceive(_:perform:)' 需要 'TimeModel' 符合“出版商”
【问题讨论】:
-
很难理解您要使用此代码实现的目标,因为您将许多概念混合在一起。如果我看到
Codable,我认为您需要从某种持久层序列化/反序列化此对象,但随后我看到SwiftUI相关协议是表示层问题,并且您也在内部使用DispatchQueue.main。您是否从此类外部动态更改nome和time?你什么时候打电话给aggiornaUI? -
@FabioFelici 目前尚未使用 updateUI,稍后当我实现从我的应用程序修改数据的可能性时,我需要它。这段代码我用它作为模型,在哪里。在我的 DataManager 中,我将把我的数据保存在一个数组中。然后我从我需要的各种视图中回忆我需要的数据
标签: ios encoding swiftui decodable