创建一个继承自对象的类可被序列化和反序列化,这样的话就可以归档到磁盘中火网络中
import Foundation
class UserModel: NSObject , NSCoding {
var name:NSString!
var password:NSString!
//对模型的姓名和密码属性进行编码 并设置对应的key
func encode(with aCoder: NSCoder) {
aCoder.encode(self.name, forKey:"name")
aCoder.encode(self.password, forKey: "password")
}
//对模型对象进行反序列化
required init?(coder aDecoder: NSCoder) {
super.init()
self.name = aDecoder.decodeObject(forKey: "name") as? NSString
self.password = aDecoder.decodeObject(forKey: "password") as! NSString
}
override init() {
}
}
在ViewController视图中
class ViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()
let user1 = UserModel()
user1.name = "jerry"
user1.password = "123"
//创建一个可变二进制对象 用来存储归档的模型对象
let data = NSMutableData()
//使数据对象 , 初始化一个键值归档对象
let archive = NSKeyedArchiver(forWritingWith: data)
//对模型对象进行归档操作
//归档:是指将对象存储为一个文件或者网络上的一个数据块
archive.encode(user1, forKey: "user1Key")
//完成归档编码 即序列化工作
archive.finishEncoding()
//初始化一个字符串对象,作为归档文件的存储路径
let filePath = NSHomeDirectory()+"/Documents/contacts.data"
data.write(toFile: filePath, atomically: true)
//对归档文件进行加载和恢复归档的操作
//读取二进制数据文件
let fileData = NSMutableData(contentsOfFile: filePath)
//对文件进行恢复归档
//恢复归档: 是指将一个来自文件或网络的归档数据块 恢复成内存中的一个swift对象
let unarchiver = NSKeyedUnarchiver(forReadingWith: fileData! as Data)
//根据设置的金铭对数据进行恢复归档操作。
let saveUser = unarchiver.decodeObject(forKey: "user1Key") as! UserModel
unarchiver.finishDecoding()
print(saveUser.name)
print(saveUser.password )
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}