理想情况下,我尝试将一个 TextField 输入设置为变量shortestWait,另一个设置为longestWait,然后我将能够在shortestWait 和longestWait 之间的随机数生成器中使用它们。
@State var shortestWait = 30
@State var longestestWait = 60
@State var randomInt = Int.random(in: shortestWait...longestWait)
我预计这会起作用,但是我收到以下错误: 无法在属性初始值设定项中使用实例成员“shortestWait”,属性初始值设定项在 self 可用之前运行。
workingdog告诉你问题了。您不能让一个属性的初始值依赖于另一个属性的初始值。相反,像这样:
@State var shortestWait = 30 {
didSet {
calcRandomInt()
}
}
@State var longestestWait = 60
didSet {
calcRandomInt()
}
}
@State var randomInt = Int.random(in: 30...60) // The initial value is a throw-away.
func calcRandomInt() {
randomInt = Int.random(in: shortestWait...longestWait)
}