Swift归档

 1 import Foundation
 2
 3 class Person : NSObject,NSCoding {
 4     var name : String?
 5     func encodeWithCoder(aCoder: NSCoder) {
 6         aCoder.encodeObject(self.name, forKey: "name");
 7     }
 8     override init() {
 9     }
10     required  init(coder aDecoder: NSCoder) {
11         self.name = aDecoder.decodeObjectForKey("name") as? String
12     }
13     func save() {
14         let home = NSHomeDirectory();
15
16         let docPath = home.stringByAppendingPathComponent("Documents");
17         let filePath = docPath.stringByAppendingPathComponent("person.archive");
18         NSKeyedArchiver.archiveRootObject(self, toFile: filePath);
19     }
20     func read()->Person {
21         let home = NSHomeDirectory();
22         let docPath = home.stringByAppendingPathComponent("Documents");
23         let filePath = docPath.stringByAppendingPathComponent("person.archive");
24         return NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as! Person;
25     }
26 }

调用:

 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     override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
10         let person = Person();
11         person.name = "言十年";
12         person.save();
13         let person2 = person.read();
14         println(person2.name!);
15     }
16     override func didReceiveMemoryWarning() {
17         super.didReceiveMemoryWarning()
18         // Dispose of any resources that can be recreated.
19     }
20
21
22 }

参考资料:

《Swift与Cocoa框架开发》

《Swift之沙盒与数据存储》http://www.helloswift.com.cn/swiftmanual/2015/0208/3486.html

时间: 2024-08-01 14:21:51

Swift归档的相关文章

在经历了6个月的学习后,我终于上架了自己的第一款APP---酷课堂iOS群问答精华整理(201807

酷课堂iOS交流群 我们是一个什么样的组织:酷课堂iOS交流群,聚集了一群热爱技术.有趣.有料,平均Q龄在10年以上的"老司机",他们遍布在全国/球各地,有知名企业iOS工程师.高校大学生.自由职业者--如果你也是这样的人,欢迎加入我们,一起畅聊iOS技术及周边. "很干""很佛系"每晚11点后熄灯(禁言),只聊技术,几乎不闲聊. IT从业者自学成功的不少,但从入门到放弃的人更多.一个人走的快,一群人走的远,希望你会是坚持到最后的那一波,希望我们

Swift实现对象归档

Swift实现对象归档时有几个注意点 要继承 NSCoding,实现两个方法 extension 是一个分类,分类不允许有存储能力,所以协议方法不能写在分类中 协议中的init(coder decoder: NSCoder)函数会覆盖原始的构造函数,所以类中至少还要有另一个init方法 如果不指定键名,会使用属性名称作为 key,基本数据类型,需要指定 key class <#className#>: NSObject,NSCoding { // 至少要有一个 init 方法,否则外部没有办法

Swift 使用Runtime对模型进行归档解档

Swift 使用Runtime对模型进行归档解档 func encode(with aCoder: NSCoder) { var count: UInt32 = 0 let propertyList = class_copyPropertyList(self.classForCoder, &count) for index in 0..<Int(count) { guard let pty = propertyList?[index], let cName = property_getNam

iOS开发笔记-swift实现iOS数据持久化之归档NSKeyedArchiver

IOS数据持久化的方式分为三种: 属性列表 (plist.NSUserDefaults) 归档 (NSKeyedArchiver) 数据库 (SQLite.Core Data.第三方类库等 归档(又名序列化),把对象转为字节码,以文件的形式存储到磁盘上:程序运行过程中或者当再次重写打开程序的时候,可以通过解归档(反序列化)还原这些对象.本文主要介绍swift实现iOS数据归档. 归档Foundation框架对象 func archiveData(){ var path: AnyObject=NS

swift中使用对象归档进行数据本地

对象归档是ios持久化中的其中一种,也是很常用的一种.现在来看看swift是如何实现的.实现要点1),必须实现NSCoding的协议 import UIKit let path=(NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask, true)[0] as String).stringByAppendingString("

iOS开发——数据持久化Swift篇&amp;模型对象归档

模型对象归档 1 import UIKit 2 3 class ViewController: UIViewController { 4 5 6 7 @IBOutlet weak var textField: UITextField! 8 9 @IBAction func btnSave(sender: UIButton) { 10 var text = textField.text as NSString 11 var image = UIImage(named: "log") 12

关于数据保存的方式(沙盒,解档归档(swift方法))

/// 保存用户信息(保存在沙盒中) - (void)saveUserInfo { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // iOS 8.0 会直接写入沙盒,无需再使用 `[defaults synchronize];` [defaults setObject:self.username forKey:SKUsernameKey]; [defaults setObject:self.pwd forKe

Swift缩水版MJExtension - Reflect的基本使用

github:https://github.com/CharlinFeng/Reflect 直接拖拽Reflect文件夹到您的项目中即可,无任何第三方依赖!文件夹结构说明:.Coding 归档相关.Reflect 反射核心包.Dict2Model 字典转模型.Model2Dict 模型转字典 这里使用plist作为数据源, plist存储的是一个数组, 数组中存储的是字典 plist的结构如下: 将plist数组中的每一个字典转换为模型, 代码如下: RPTableViewController.

swift目录

第二部分 实 战 第3章 UI基础 138 3.1 iOS开发平台限制和方式 138 3.2 iOS SDK介绍 141 第4章 UI开发与控件 182 4.1 窗口与视图 182 4.1.1 UIScreen.UIWindow和UIView 182 4.1.2 界面旋转和大小处理 188 4.2 图片资源的使用 191 4.3 UILabel 201 4.4 UITextField 206 4.5 UIButton 216 4.6 UITableView 221 4.6.1 UITableVi