IOS資料處理及版本特性-NSKeyedArchiver儲存和解析
阿新 • • 發佈:2018-11-22
建立一個繼承自物件的類可被序列化和反序列化,這樣的話就可以歸檔到磁碟中火網路中
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. } }