【发布时间】:2021-09-23 10:36:41
【问题描述】:
我收到以下编译错误: “变量‘self.entryData’在初始化之前使用” 如何修复它并在我的 init 方法中正确初始化 @state var entryData?
struct EditEntryView: View {
@Environment(\.managedObjectContext) private var viewContext
@State var entryData: EditEntryData
@ObservedObject var moneyEntry: MoneyEntry
init(entry: MoneyEntry) {
moneyEntry = entry
let iOwe = entry.value < 0 ? true : false
let value = abs(entry.value)
entryData = EditEntryData(info: entry.infos, value: String(value), date: entry.date, iOwe: iOwe)
}
}
struct EditEntryData {
var info: String = ""
var value: String = ""
var date: Date = Date()
var iOwe: Bool = false
}
【问题讨论】:
-
什么是 EditEntryData?你能在这里添加吗
-
EditEntryData 是一个简单的结构。我将结构定义添加到问题中
-
您不能在初始化程序中初始化
@State变量。状态是视图私有的,需要在声明中内联初始化,在初始化程序之外:@State var entryData = EditEntryData(...)。如果你不能这样做,那根本就不是“状态”。将此值放入重新设计的@ObservedObject类中。