想要在方程式中使用@Binding 变量
Want To Use @Binding Variables In Equations
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down:Binding<Double>, apr:Binding<Double>, of rate: Double ) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
以上是我的代码,我确实在另一个视图中使用@State 正确定义了@Binding 变量。
我想做的是在等式中使用 'rate' 来定义 'apr/12'。我想我之前在 Xcode 的早期版本中解决过这个问题,但现在我得到的只是:"Cannot use instance member 'apr' within property initializer; property initializers run before 'self' is available."
我知道我正在使用 Binding 类型,但即使我使用 Double() 更改类型,我仍然会遇到错误。任何帮助,将不胜感激。
您似乎试图在 init() 完成之前访问结构中的某个属性,例如:
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
apr = rate // error: Cannot use instance member 'apr' within property initializer; property initializers run before 'self' is available.
var body: some View {
Text("\(apr/rate)")
}
}
您可以从正文中访问 'rate' 属性,例如:
let input = Input(price: 10.0, down: 10.0, apr: 10.0)
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
var body: some View {
Text("\(apr/rate)") // shows apr/rate properly
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
FinanceOutput(price: input.$price, down: input.$down, apr: input.$apr, of: 12.0)
}
}
struct Input: View {
@State var price: Double
@State var down: Double
@State var apr: Double
var body: some View {
Text("\(price), \(down), \(apr)")
}
}
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down:Binding<Double>, apr:Binding<Double>, of rate: Double ) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
以上是我的代码,我确实在另一个视图中使用@State 正确定义了@Binding 变量。
我想做的是在等式中使用 'rate' 来定义 'apr/12'。我想我之前在 Xcode 的早期版本中解决过这个问题,但现在我得到的只是:"Cannot use instance member 'apr' within property initializer; property initializers run before 'self' is available." 我知道我正在使用 Binding 类型,但即使我使用 Double() 更改类型,我仍然会遇到错误。任何帮助,将不胜感激。
您似乎试图在 init() 完成之前访问结构中的某个属性,例如:
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
apr = rate // error: Cannot use instance member 'apr' within property initializer; property initializers run before 'self' is available.
var body: some View {
Text("\(apr/rate)")
}
}
您可以从正文中访问 'rate' 属性,例如:
let input = Input(price: 10.0, down: 10.0, apr: 10.0)
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double
private var rate: Double = 0.0
init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
self._price = price
self._down = down
self._apr = apr
self.rate = rate
}
var body: some View {
Text("\(apr/rate)") // shows apr/rate properly
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
FinanceOutput(price: input.$price, down: input.$down, apr: input.$apr, of: 12.0)
}
}
struct Input: View {
@State var price: Double
@State var down: Double
@State var apr: Double
var body: some View {
Text("\(price), \(down), \(apr)")
}
}