IOS(swift)-数据存储 · NSKeyedArchiver 归档
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS(swift)-数据存储 · NSKeyedArchiver 归档,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1803字,纯文字阅读大概需要3分钟。
内容图文
需求:
有一个通讯列表,可以自行添加联系数据,但是重新开启后,添加的数据都会清空,我希望打开后,上一次的数据能保留。
这我们就必须用到数据持久化,这一次,我将用NSKeyedArchiver 归档 方式来做数据持久化,达到再次打开应用后,数据依然存在。
通讯录.png
NSKeyedArchiver、NSKeyedUnarchiver ,主要用在ios数据存储上,数据从内存存储到闪存上,这个过程称为归档。Apple官方文档中,这些数据类型包括:
NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。很显然,复杂数据例如UIImage,无法直接归档。但我们有一种变通的做法,先将UIImage对象转换为NSData,再对NSData进行归档。
一、创建一个数据模型(自定义类)
import UIKitclass JKContactModel: NSObject,NSCoding{ var name:NSString! var phone:NSString! func encodeWithCoder(aCoder: NSCoder){ aCoder.encodeObject(self.name, forKey: "name") aCoder.encodeObject(self.phone, forKey: "phone") } required init(coder aDecoder: NSCoder) { super.init() self.name = aDecoder.decodeObjectForKey("name") as NSString! self.phone = aDecoder.decodeObjectForKey("phone") as NSString! } override init() { } }
通过以上的代码我们可以看出,要实现对数据模型的归档,需要我们实现NScoding协议,
NScoding协议需要实现两个方法:
func encodeWithCoder(aCoder: NSCoder)
以keyValue形式对基本数据类型Encoding
init(coder aDecoder: NSCoder)
以keyValue形式对基本数据类型Decoding
二、创建一个全局路径,即要保存到闪存的位置:
let ContactFilePath = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0].stringByAppendingPathComponent("contacts.data")
三、从归档中读取给数组,如果第一次读取无数据,则实例化数组
这里要用到 解档方法:
NSKeyedUnarchiver.unarchiveObjectWithFile(ContactFilePath)
var contactArr:NSMutableArray?if(contactArr == nil){ println("从归档中提取") contactArr = NSKeyedUnarchiver.unarchiveObjectWithFile(ContactFilePath) as NSMutableArray! if(contactArr == nil){ println("归档中没有,创建数组") self.contactArr = NSMutableArray() } }
四、保存归档
在所有对数组进行操作的地方进行归档保存
NSKeyedArchiver.archiveRootObject(self.contactArr!, toFile: ContactFilePath)
归档这种保存方式缺点就是没有属性列表(NSuserDefault)速度快,因为它每次都要把文件保存到闪存中,优点是可以创建自己想要的数据模型
IOS(swift)-数据存储 · NSKeyedArchiver 归档
原文:http://my.oschina.net/SoulJa/blog/524270
内容总结
以上是互联网集市为您收集整理的IOS(swift)-数据存储 · NSKeyedArchiver 归档全部内容,希望文章能够帮你解决IOS(swift)-数据存储 · NSKeyedArchiver 归档所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。