在 AppStorage 中初始化数据时,对初始化程序的调用没有完全匹配

No exact matches in call to initializer when initializing Data in AppStorage

我正在学习如何在 AppStorage 中存储自定义类型,但遇到了一个问题。在这个简化的示例中,我试图在创建视图后将一个空的 Int 数组保存到 AppStorage。

下面的代码给出了错误,No exact matches in call to initializer 。我知道这个错误通常意味着某处存在不匹配的类型,但我不确定 应该 的类型是什么,或者如何修复它。

struct test: View {
    
    init() {
        let emptyList = [Int]()
        guard let encodedList = try? JSONEncoder().encode(emptyList) else { return }
        self.storedList = encodedList
    }
    
    @AppStorage("stored_list") var storedList: Data      //NO EXACT MATCHES TO CALL IN INITIALIZER
    
    //"body" implementation not shown
}

为什么会出现此错误,我该如何解决?

它应该是默认值或可选的,所以正确的变体是

@AppStorage("stored_list") var storedList: Data = Data()

@AppStorage("stored_list") var storedList: Data?