swift 在UserDefaults中保存自定义类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 在UserDefaults中保存自定义类相关的知识,希望对你有一定的参考价值。

// source: http://ios-tutorial.com/how-to-save-array-of-custom-objects-to-nsuserdefaults/
// Important, for float decode using 
self.maxValue = (aDecoder.decodeFloat(forKey: Keys.maxValue.rawValue))
// not by (aDecoder.decodeObject(forKey: Keys.maxValue.rawValue) as? Float)!

class Parameter: NSObject, NSCoding {
    
//    var itemID: Int?
//    var itemName: String?
    var name = ""
    var minValue:Float = 0.0
    var maxValue:Float = 1.0
    var currentValue:Float = 0.0
    
    private enum Keys : String {
        case name = "name",
        minValue = "minValue",
        maxValue = "maxValue",
        currentValue = "currentValue"
    }
    
    init(name: String, minValue: Float, maxValue: Float, currentValue: Float)
    {
        self.name = name
        self.minValue = minValue
        self.maxValue = maxValue
        self.currentValue = currentValue
    }
    
    func encode(with aCoder: NSCoder)
    {
        aCoder.encode(self.name, forKey: Keys.name.rawValue)
        aCoder.encode(self.minValue, forKey: Keys.minValue.rawValue)
        aCoder.encode(self.maxValue, forKey: Keys.maxValue.rawValue)
        aCoder.encode(self.currentValue, forKey: Keys.currentValue.rawValue)
    }
    
    required init?(coder aDecoder: NSCoder)
    {
        self.name = (aDecoder.decodeObject(forKey: Keys.name.rawValue) as? String)!
        self.minValue = (aDecoder.decodeFloat(forKey: Keys.minValue.rawValue))
        self.maxValue = (aDecoder.decodeFloat(forKey: Keys.maxValue.rawValue))
        self.currentValue = (aDecoder.decodeFloat(forKey: Keys.currentValue.rawValue))
        
    }
    
}

以上是关于swift 在UserDefaults中保存自定义类的主要内容,如果未能解决你的问题,请参考以下文章

Swift: 用UserDefaults保存复杂对象

UserDefaults 自定义对象的自定义对象

自定义类 Unarchive 在 Cocoa Swift 中为零

Swift - UserDefaults 设置未保存在框架内

如何在 swift 4 中的 UserDefalts 中设置自定义类数组数据

Swift 5 将 AVAsset 保存到 UserDefaults