1

我试图从 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 会抛出这个错误:

不能在属性初始化器中使用实例成员“产品”;属性初始化程序在“自我”可用之前运行

我理解为什么 Swift 会抛出这个错误,但我不知道如何解决它。有解决办法吗?

非常感谢你,阿尔贝托

4

1 回答 1

1

这是您的代码快照的解决方案 - 根据输入提供显式初始化程序并在其中实例化属性:

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")
    }
}
于 2021-09-15T17:02:10.420 回答