这里有一个名为“Data”的变量。它来自“memorySTR”类型,它是自定义的。当应用程序关闭时,此变量必须保存到UserDefaults,并在应用程序再次运行时加载。这是代码。
//Here loads the data when the app runs :
if UserDefaults.standard.object(forKey: "Data") != nil {Data = UserDefaults.standard.object(forKey: "Data") as! MemorySTR}
//Here saves the data when necessary :
UserDefaults.standard.set( Data ,forKey: "Data")
但遗憾的是,UserDefaults不接受类型“memorySTR”,因此它会出错。此外,“memorySTR”类型不是简单类型,这意味着我们无法逐个保存其属性。那么我们如何将该变量保存到永久存储? 请用SIMPLES和SHORTEST方法解决这个问题。
答案 0 :(得分:0)
您可以在NSKeyArchiver
课程中使用NSCoder
并实施MemorySTR
协议,然后执行此操作
实施NSCoder协议
required convenience init?(coder decoder: NSCoder)
{
//***decode your attributes here**//
}
extension MemorySTR : NSCoding
{
func encode(with aCoder: NSCoder) {
//***encode your attributes here**//
}
}
从UserDefaults保存和加载自定义对象
func saveData(object: MemorySTR){
let myEncodedObject = NSKeyedArchiver.archivedData(withRootObject: object)
UserDefaults.standard.set(myEncodedObject, forKey:"memoryStr")
}
func loadMemorySTRObject() -> MemorySTR?{
let myEncodedObjet = UserDefaults.standard.object(forKey:"memoryStr")
if myEncodedObjet != nil {
return NSKeyedUnarchiver.unarchiveObject(with: myEncodedObjet as! Data) as! MemorySTR
}else{
return nil
}
}
希望这有帮助