Swiftui 类型';收藏夹。键入';不能符合';可编码的;;只有结构/枚举/类类型才能符合协议

Swiftui 类型';收藏夹。键入';不能符合';可编码的;;只有结构/枚举/类类型才能符合协议,swiftui,Swiftui,请告诉我这个错误可能有什么问题,以及如何修复它 我正在使用Swiftui2.0 “类型'Favorites.Type'不能符合'Encodable';只有结构/枚举/类类型可以符合协议” 代码: 类收藏夹:ObservableObject{ 私有var任务:Set 让defaults=UserDefaults.standard init(){ let decoder=JSONDecoder() 如果let data=defaults.value(forKey:“收藏夹”)作为数据{ 让taskD

请告诉我这个错误可能有什么问题,以及如何修复它

我正在使用Swiftui2.0

“类型'Favorites.Type'不能符合'Encodable';只有结构/枚举/类类型可以符合协议”

代码:

类收藏夹:ObservableObject{
私有var任务:Set
让defaults=UserDefaults.standard
init(){
let decoder=JSONDecoder()
如果let data=defaults.value(forKey:“收藏夹”)作为数据{
让taskData=try?decoder.decode(Set.self,from:data)
self.tasks=任务数据???[]
}否则{
self.tasks=[]
}
}
func getTaskIds()->Set{
返回自己的任务
}
func isEmpty()->Bool{
任务数<1
}
func包含(u任务:dataTypeFont)->Bool{
tasks.contains(task.id)
}
func add(uu任务:dataTypeFont){
objectWillChange.send()
tasks.insert(task.id)
保存()
}
func remove(uu任务:dataTypeFont){
objectWillChange.send()
tasks.remove(task.id)
保存()
}
func save(){
let encoder=JSONEncoder()
如果let encoded=try?encoder.encode(收藏夹){
defaults.set(编码,forKey:“收藏夹”)
}
}
}

屏幕截图错误: 打字错误

根据加载方法,您必须编码
任务
而不是类类型

func save() {
    let encoder = JSONEncoder()
    if let encoded = try? encoder.encode(tasks)  {
        defaults.set(encoded, forKey: "Favorites")
    }
}
不要将
值(forKey:
UserDefaults
一起使用,有一个专用的方法

if let data = defaults.data(forKey: "Favorites") {
if let data = defaults.data(forKey: "Favorites") {