如何将视图输入参数传递给@State 变量?
How Do You Pass A View Input Argument To @State Variable?
我有一个基本的 SwiftUI 问题 - 我有一个接受参数的视图,在我的例子中是“symbolName”,我想获取它的价格。我有一个执行此操作的 class 函数,但是 将视图参数作为参数传递给 FetchPrice 不起作用 。当我使用固定字符串(例如“GE”)时,它会起作用。我确信有一个正确的方法可以做到这一点,感谢您的任何提示和技巧!
错误:
Cannot use instance member 'symbolNameV' within property initializer;
property initializers run before 'self' is available
import SwiftUI
struct SymbolRow2: View {
var symbolNameV: String
@ObservedObject var fetchPrice = FetchPrice(symbolName:symbolNameV)
...
property initializers run before 'self' is available
通过调用
FetchPrice(symbolName: symbolNameV)
您正在访问 self
。上面的代码其实是:
FetchPrice(symbolName: self.symbolNameV)
要解决这个问题,您可以创建自定义 init
:
struct SymbolRow2: View {
private var symbolNameV: String
@ObservedObject private var fetchPrice: FetchPrice
init(symbolNameV: String) {
self.symbolNameV = symbolNameV
self.fetchPrice = FetchPrice(symbolName: symbolNameV)
}
...
}
我有一个基本的 SwiftUI 问题 - 我有一个接受参数的视图,在我的例子中是“symbolName”,我想获取它的价格。我有一个执行此操作的 class 函数,但是 将视图参数作为参数传递给 FetchPrice 不起作用 。当我使用固定字符串(例如“GE”)时,它会起作用。我确信有一个正确的方法可以做到这一点,感谢您的任何提示和技巧!
错误:
Cannot use instance member 'symbolNameV' within property initializer; property initializers run before 'self' is available
import SwiftUI
struct SymbolRow2: View {
var symbolNameV: String
@ObservedObject var fetchPrice = FetchPrice(symbolName:symbolNameV)
...
property initializers run before 'self' is available
通过调用
FetchPrice(symbolName: symbolNameV)
您正在访问 self
。上面的代码其实是:
FetchPrice(symbolName: self.symbolNameV)
要解决这个问题,您可以创建自定义 init
:
struct SymbolRow2: View {
private var symbolNameV: String
@ObservedObject private var fetchPrice: FetchPrice
init(symbolNameV: String) {
self.symbolNameV = symbolNameV
self.fetchPrice = FetchPrice(symbolName: symbolNameV)
}
...
}