swift数据持久化--归档
2016-03-10 00:36
726 查看
在数据存储上比较常用,下面给大家简单介绍一下归档:
一般情况下我们先从网络上获取json数据,然后简历数据模型,最后将数据模型存储,但是归档不是所有的数据类型都可以存储,归档存储的类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary五种类型,如果不能归档,我们可以尝试转化为这五种中的任何一种再进行存储
一般情况下我们先从网络上获取json数据,然后简历数据模型,最后将数据模型存储,但是归档不是所有的数据类型都可以存储,归档存储的类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary五种类型,如果不能归档,我们可以尝试转化为这五种中的任何一种再进行存储
//这里要遵守nscoding协议 class UserData: NSObject , NSCoding { var expires_Date:NSDate? var uid:String? var avatar_large: String? var screen_name: String? // 1.0用字典初始化模型 init(dict:[String:AnyObject]) { super.init() setValuesForKeysWithDictionary(dict) } //如果字典中又缺少值的情况不会报错 override func setValue(value: AnyObject?, forUndefinedKey key: String) { print(key) } //MARK: NACODING协议 //2.0 将对象写入到文件中 func encodeWithCoder(aCoder: NSCoder) { aCoder.encodeObject(access_token, forKey: "access_token") aCoder.encodeObject(expires_in, forKey: "expires_in") aCoder.encodeObject(uid, forKey: "uid") aCoder.encodeObject(expires_Date, forKey: "expires_Date") } //3.0 从文件中读取对象 required init?(coder aDecoder: NSCoder) { access_token = aDecoder.decodeObjectForKey("access_token") as? String expires_in = aDecoder.decodeObjectForKey("expires_in") as? NSNumber uid = aDecoder.decodeObjectForKey("uid") as? String expires_Date = aDecoder.decodeObjectForKey("expires_Date") as? NSDate } //下面定义两个方法供外部使用 //4.0 保存授权模型 func saveAccount() { let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! let filePath = (path as NSString).stringByAppendingPathComponent("user.plist") print("filePath \(filePath)") NSKeyedArchiver.archiveRootObject(self, toFile: filePath) } //5.0 加载授权模型 class func loadAccount() -> UserAccount? { let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.CachesDirectory, NSSearchPathDomainMask.UserDomainMask, true).last! let filePath = (path as NSString).stringByAppendingPathComponent("user.plist") print("filePath \(filePath)") let account = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as? UserAccount return account }
相关文章推荐
- Apple Swift学习教程
- 介绍 Fedora 上的 Swift
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- 探讨Swift数组和字典
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符
- Swift中使用可选类型完美解决占位问题
- Swift学习笔记之构造器重载
- Swift中的Access Control权限控制介绍
- Swift类型创建之自定义一个类型详解
- Swift教程之控制流详解