码迷,mamicode.com
首页 > 其他好文 > 详细

NSCoding序列化

时间:2016-06-26 00:28:15      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

一个类用于存储获取的用户登陆信息,让这个类实现NSCoping Protocol。然后实现协议里面的

required init?(coder aDecoder: NSCoder)方法和 func encodeWithCoder(aCoder: NSCoder)方法。然后就可以用

 let data = NSKeyedArchiver.archivedDataWithRootObject(someObj)方法得到NSData对象,可以直接写入文件,或者直接NSStardardDefaults.setValue()方法,就可以序列化了

代码备忘:

import UIKit
class UserInfo:NSObject,NSCoding{
    private let iconkey = "iconkey"
    private let nicknamekey="nicknamekey"
    private let aboutMekey="aboutmekey"
    private let  statuskey="statuskey"
    var icon:String
    var name:String
    var aboutMe:String
    var statustext:String
    init(dict:[String:AnyObject]) {
        self.icon = ""
        self.name = ""
        self.aboutMe = ""
        self.statustext = ""
        super.init()
        setValuesForKeysWithDictionary(dict)
        
    }
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {
        //
    }
    func encodeWithCoder(aCoder: NSCoder){
        aCoder.encodeObject(icon, forKey: iconkey)
        aCoder.encodeObject(name, forKey: nicknamekey)
        aCoder.encodeObject(aboutMe, forKey: aboutMekey)
        
        aCoder.encodeObject(statustext,forKey: statuskey)
    }
    required init?(coder aDecoder: NSCoder){
        self.icon = aDecoder.decodeObjectForKey(iconkey) as! String
        self.name = aDecoder.decodeObjectForKey(nicknamekey) as! String
        self.aboutMe = aDecoder.decodeObjectForKey(aboutMekey) as! String
        self.statustext = aDecoder.decodeObjectForKey(statuskey) as! String
    }// NS_DESIGNATED_INITIALIZER


let ui:UserInfo = UserInfo(dict: dict);

let data = NSKeyedArchiver.archivedDataWithRootObject(ui)
ud.setValue(data, forKey: LoginInfo);

 读取的时候用下面的

 if let userinfo  = NSKeyedUnarchiver.unarchiveObjectWithData(NSUserDefaults.standardUserDefaults().objectForKey(LoginInfo) as! NSData) as? UserInfo{
            
            (self.view.viewWithTag(100) as! UIImageView).yy_setImageWithURL(NSURL(string: userinfo.icon), options: YYWebImageOptions.ProgressiveBlur);
            (self.view.viewWithTag(101) as! UILabel).text = userinfo.name;
            (self.view.viewWithTag(102) as! UILabel).text = userinfo.aboutMe;
            (self.view.viewWithTag(103) as! UILabel).text = userinfo.statustext;

        }

 

NSCoding序列化

标签:

原文地址:http://www.cnblogs.com/alexmercer/p/5617118.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!