您的位置:首页 > 移动开发 > Swift

实现自定义数据存入 UserDefaults [iOS Swift] NSKeyedArchive & UserDefaults

2017-09-05 12:28 666 查看
我们知道 UserDefault 可以存储一些常见的基础数据类型,Int String Date 等等,但当你想存储一些自定义的一些数据 (如 People Car)的时候该怎么办呢。

如下,UserDefaults 在存储自定义数据时,需要:

在自定义类中实现
NSCoding
的两个方法,

解密
init(coder aCoder: NSCoder)


加密
encode(with aCoder: NSCoder)


用里面的方法来处理自己类的变量

解密
aCoder.decodeObject/.decodeInteger/...(forKey: "KEY")


加密
aCoder.encode(VAR, forKey: "KEY")


required init?(coder aDecoder: NSCoder) {
super.init()
if let reds = aDecoder.decodeObject(forKey: "redBalls") as?  [Int] {
redBalls = reds
} else {
redBalls = []
}
blueBall = aDecoder.decodeInteger(forKey: "blueBall")
}

func encode(with aCoder: NSCoder) {
aCoder.encode(redBalls, forKey:"redBalls")
aCoder.encode(blueBall, forKey: "blueBall")
}


先将数据用
NSKeyedArchiver
转换一下,再存储

let archivedData = NSKeyedArchiver.archivedData(withRootObject: DataVAR) // 先把在存储的变量归档
UserDefaults.standard.set(archivedData, forKey: "KEY") // 再存入 UserDefaults


取出的时候
NSKeyedUnArchiver

if let rawData = (UserDefaults.standard.object(forKey: "KEY") as? Data) {
原始数据 =  NSKeyedUnarchiver.unarchiveObject(with: rawData) as! 存入的数据类型
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐