博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift数据持久化--归档
阅读量:6006 次
发布时间:2019-06-20

本文共 2195 字,大约阅读时间需要 7 分钟。

hot3.png

在数据存储上比较常用,下面给大家简单介绍一下归档:

      一般情况下我们先从网络上获取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    }

转载于:https://my.oschina.net/ShangGuanchen/blog/634159

你可能感兴趣的文章
Velocity教程
查看>>
git进阶命令
查看>>
arcgis server 10.1 发布动态图层展示海量及频繁更新的数据步骤
查看>>
如何让DataGridview控件自动滚动到指定的行或列
查看>>
寒假随笔
查看>>
iOS-关于iOS应用支持IP6
查看>>
svn 服务器搭建 ,采用http的方式加密用户。
查看>>
正则表达式
查看>>
Mysql设置创建时间字段和更新时间字段自动获取时间,填充时间
查看>>
在项目开发中经常用到的全局函数2
查看>>
温故而知新 phpstudy 设置 nginx 代理
查看>>
托管代码与非托管代码的区别
查看>>
【JAVA语法】01Java-变量与数据类型
查看>>
vue2.0 组件化及组件传值
查看>>
javascript常用的107个语句
查看>>
Lambda拉姆达表达式
查看>>
深入理解PHP内核(十三)类的结构和实现
查看>>
【Android】11.6 Fragments基本用法示例
查看>>
idoc 和 bapi 和 rfc 之间的区别
查看>>
Android 输入法键盘和activity页面遮挡问题解决
查看>>