SwiftUI - @AppStorage 变量键值
SwiftUI - @AppStorage variable key value
我正在尝试从 UserDefaults 获取一个 Bool,其键取决于产品的 nameID。
我这样试过:
import SwiftUI
struct ProductDetail: View {
var product: GumroadProduct
@AppStorage("LOCAL_LIBRARY_PRESENCE_PRODUCTID_\(product.id)") var isLocal: Bool = false
var body: some View {
Text("ProductView")
}
}
无论如何 Swift 抛出此错误:
Cannot use instance member 'product' within property initializer;
property initializers run before 'self' is available
我明白为什么 Swift 会抛出该错误,但我不知道如何解决它。
有解决办法吗?
非常感谢您,
阿尔贝托
这是您的代码快照的解决方案 - 根据输入在其中提供显式初始化程序和实例化属性:
struct ProductDetail: View {
@AppStorage private var isLocal: Bool
private var product: GumroadProduct
init(product: GumroadProduct) {
self.product = product
self._isLocal = AppStorage(wrappedValue: false, "LOCAL_LIBRARY_PRESENCE_PRODUCTID_\(product.id)")
}
var body: some View {
Text("ProductView")
}
}
我正在尝试从 UserDefaults 获取一个 Bool,其键取决于产品的 nameID。
我这样试过:
import SwiftUI
struct ProductDetail: View {
var product: GumroadProduct
@AppStorage("LOCAL_LIBRARY_PRESENCE_PRODUCTID_\(product.id)") var isLocal: Bool = false
var body: some View {
Text("ProductView")
}
}
无论如何 Swift 抛出此错误:
Cannot use instance member 'product' within property initializer; property initializers run before 'self' is available
我明白为什么 Swift 会抛出该错误,但我不知道如何解决它。 有解决办法吗?
非常感谢您, 阿尔贝托
这是您的代码快照的解决方案 - 根据输入在其中提供显式初始化程序和实例化属性:
struct ProductDetail: View {
@AppStorage private var isLocal: Bool
private var product: GumroadProduct
init(product: GumroadProduct) {
self.product = product
self._isLocal = AppStorage(wrappedValue: false, "LOCAL_LIBRARY_PRESENCE_PRODUCTID_\(product.id)")
}
var body: some View {
Text("ProductView")
}
}