目录:[Swift]Xcode实际操作
本文将演示如何使用归档的方法,对模型对象进行持久化工作。
在项目名称上点击鼠标右键,弹出右键菜单,选择【New File】新建文件命令,
在弹出的模板选项窗口中,选择【Swift】文件选项,创建一模型对象。
->【Next】->在存储为输入框内,输入属性列表文件的名称,
【Save As】:UserModel.swift
->然后点击创建【Create】按钮,确认属性列表文件的创建
在自动打开的代码文件【UserModel.swift】中,创建一个基本对象模型。
1 import Foundation
2
3 //创建一个继承自NSObject的类,并遵守NSCoding协议
4 //遵守NSCoding协议的类,可以被序列化和反序列化,
5 //这样可以归档到磁盘上或分发到网络上
6 class UserModel: NSObject, NSCoding
7 {
8 //添加姓名属性
9 var name:NSString!
10 //添加密码属性
11 var password:NSString!
12
13 //添加一个来自协议的方法,用来对模型对象进行序列化操作
14 func encode(with aCoder: NSCoder)
15 {
16 //对模型的姓名进行编码操作,并设置对应的键名
17 aCoder.encode(, forKey: "name")
18 //对模型的密码进行编码操作,并设置对应的键名
19 aCoder.encode(self.password, forKey: "password")
20 }
21
22 //添加一个来自协议的方法,用来对模型对象进行反序列化操作
23 required init(coder aDecoder: NSCoder)
24 {
25 super.init()
26 //对模型对象的姓名属性,根据对应的键名,进行解码操作
27 = aDecoder.decodeObject(forKey: "name") as? NSString
28 //对模型对象的密码属性,根据对应的键名,进行解码操作
29 self.password = (aDecoder.decodeObject(forKey: "password") as! NSString)
30 }
31
32 //重载父类的初始化方法
33 override init()
34 {
35
36 }
37 }
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编码,创建一个模型对象,并对其进行归档和恢复归档的操作。
归档:指的使将Swift对象,存储为一个文件或网络上的数据块。
恢复归档:指的是将一个来自文件或网络的归档数据块,恢复成内存中的一个Swift对象。
1 import UIKit
2
3 class ViewController: UIViewController {
4
5 override func viewDidLoad() {
6 super.viewDidLoad()
7 // Do any additional setup after loading the view, typically from a nib.
8
9 //初始化上文定义的对象模型
10 let user1 = UserModel()
11 //设置对象名称的值
12 = "Jerry"
13 //设置对象密码的值
14 user1.password = "123"
15
16 //创建一个可变二进制数据对象,用来存储归档后的模型对象
17 let data = NSMutableData()
18 //使数据对象,初始化一个键值归档对象
19 let archive = NSKeyedArchiver(forWritingWith: data)
20 //对模型对象进行归档操作。
21 //归档:指的使将Swift对象,存储为一个文件或网络上的数据块。
22 archive.encode(user1, forKey: "user1Key")
23 //完成归档的编码,即序列化操作。
24 archive.finishEncoding()
25
26 //初始化一个字符串对象,作为归档文件的存储路径
27 let filePath = NSHomeDirectory() + "/Documents/contacts.data"
28 //将归档文件,存储在程序包的指定位置
29 data.write(toFile: filePath, atomically: true)
30
31 //现在来对归档文件进行加载和恢复归档的操作
32 //读取刚刚保存的二进制文件
33 let fileData = NSMutableData(contentsOfFile: filePath)
34 //对文件进行恢复归档操作
35 //恢复归档:指的是将一个来自文件或网络的归档数据块,恢复成内存中的一个Swift对象。
36 let unarchiver = NSKeyedUnarchiver(forReadingWith: fileData! as Data)
37
38 //根据设置的键名,对数据进行恢复归档操作,并获得最终结果
39 let savedUser = unarchiver.decodeObject(forKey: "user1Key") as! UserModel
40 //完成对象的解码操作
41 unarchiver.finishDecoding()
42
43 //在控制台打印输出对象的两个属性
44 print(savedUser.name)
45 print(savedUser.password)
46 }
47
48 override func didReceiveMemoryWarning() {
49 super.didReceiveMemoryWarning()
50 // Dispose of any resources that can be recreated.
51 }
52 }
















