学习笔记(05):iOS移动开发从入门到精通(Xcode11 & Swift5)-NSKeyedArchiver存储和解析数据...
立即学习:https://edu.csdn.net/course/play/26947/347242?utm_source=blogtoedu
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//创建一个模型对象并对其进行归档和恢复归档操作
//初始化刚定义的对象模型
let user1 = UserModel()
//设置对象名称和密码属性值
user1.name = "Jerry"
user1.password = "123"
//添加异常捕捉语句,用来执行归档和恢复归档操作
do {
//创建一个可变二进制数据对象,用来存储归档后的模型对象。归档指的是将Swift对象存储为一个文件或网络上的一个数据块
let data = try NSKeyedArchiver.archivedData(withRootObject: user1, requiringSecureCoding: true)
//将归档的数据存储在程序包的Preference目录
UserDefaults.standard.set(data, forKey: "user1")
UserDefaults.standard.synchronize()
//对归档数据进行加载和恢复归档操作
//读取刚刚保存的数据
let dataFrom = UserDefaults.standard.data(forKey: "user1")
//恢复归档操作,恢复成内存中一个Swift对象
let savedUser = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(dataFrom!) as? UserModel
print(savedUser?.name ?? "")
print(savedUser?.password ?? "")
}
catch {
print("Archive error.")
}
// Do any additional setup after loading the view.
}
}
UserModel.swift
import Foundation
//创建基本对象模型
//创建一个继承自NSObject的类并遵循NSCoding协议。遵循该协议的类可以被序列化和反序列化。这样可以归档到磁盘上或分发到网络上
class UserModel: NSObject, NSCoding, NSSecureCoding {
//为对象模型添加姓名和密码两个属性
static var supportsSecureCoding: Bool = true
var name: NSString!
var password: NSString!
//添加一个序列方法用来对模型对象进行序列化操作
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() {
}
}
- android菜鸟学习笔记19----Android数据存储(三)XML文件的解析及序列化
- 学习笔记(05):Python爬虫开发-数据解析
- Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML
- iphone学习笔记--JSON数据解析
- Windows Phone 开发学习笔记(十) RSS阅读器之解析数据
- Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)
- SAP BW平面文件特征数据的加载——视频学习笔记04和05
- Oracle XML学习笔记1 - 存储XML数据
- android 学习笔记 数据存储到文件中
- Android网络与数据存储_学习笔记_第五周
- Redis学习笔记4--Redis数据存储优化机制
- 【Cocos2d-X开发学习笔记】第29期:游戏中数据的存储(上)
- Replica Island 学习笔记 05 - 关卡数据
- OpenCV学习笔记06--数据存储、配置文件
- android 学习笔记 解析json格式的数据 JSONObject 和GSON解析json格式数据
- 【学习笔记】day2数据存储和界面展现第一天 01_相对布局
- 【学习笔记----数据结构05-栈与队列】
- android菜鸟学习笔记20----Android数据存储(四))Android数据库操作
- 学习笔记之cocos2d-x2.1.1实现修改plist文件数据,用TinyXml解析XML
- iOS学习笔记(九)—— xml数据解析