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