Swift 使用泛型函数从UserDefaults加载

Swift 使用泛型函数从UserDefaults加载,swift,generics,Swift,Generics,我想使用通用函数从UserDefaults加载: func loadFromUserDefaultstype:T.类型,forKey:String->T?{ let decoder=JSONDecoder 如果let data=UserDefaults.standard.objectforKey:key as?data, 让object=try?decoder.decodeT.self,from:data{ 回波信号 } 归零 } 在编译上述函数时,我无法调用该函数: 如果let object=

我想使用通用函数从UserDefaults加载:

func loadFromUserDefaultstype:T.类型,forKey:String->T?{ let decoder=JSONDecoder 如果let data=UserDefaults.standard.objectforKey:key as?data, 让object=try?decoder.decodeT.self,from:data{ 回波信号 } 归零 } 在编译上述函数时,我无法调用该函数:

如果let object=loadFromUserDefaultstype:MyClass.Type,则forKey:key{ self.myProperty=object }否则{ 类名 } 给我错误类型“MyClass.Type”不能与“Decodable”一致;只有结构/枚举/类类型才能符合协议

MyClass符合Codable,所以这不是问题所在

虽然我认为我理解了潜在的错误,但我没有找到解决这个问题的解决方案。

在类模型中继承可解码协议,并像这样调用

class MyClass: Decodable {
    
}

你是对的,这当然是必需的——因为MyClass以前符合Codable,尽管我不确定错误消息的含义。。。我目前在同一个ViewModel中有func–在使用'Self.loadFromUserDefaultstype:forKey:在初始化器中调用它之后,它工作了…显然,我想重构并将函数移动到另一个helper类或类似的类中,这将是我的下一步。
if let object = loadFromUserDefaults(type: MyClass.self, forKey: "key") {
    self.myProperty = object
} else {
    MyClass()
}