zoukankan      html  css  js  c++  java
  • 编码和解码(序列化和反序列化)

    cocoa具备一种机制来将自定义对象自身转换为某种格式并保存中磁盘上。

    对象可以将它的实例变量和其它数据编码为数据块,然后保存到磁盘中(编码)。以后将这些数据块加载到内存中,并且

    还能基于保存的数据创建新对象。这个过程称为编码和解码,或称为序列化和反序列化。

    DOC:The init method that gets used depends on how the view is created. It can be explicitly created using initWithFrame or it can be created by loading a nib. In that case, the initWithCoder method gets called when the view is loaded from the nib. There are other init methods for subclasses (like UITableViewController has initWithStyle), so you have to be sure which one is being called.

    要实现对象的编解码,必须实现NSCoding协议。

    @protocol NSCoding

    -(void) encoderWithCoder:(NSCoder *) aCoder;//对象保存自身时--编码

    -(id) initWithCoder:(NSCoder *) aDecoder;//对象加载自身时--解码

    @end

    //nscoding协议的编码方法

    -(void) encodeWithCoder:(NSCoder *) coder{

    [coder encodeObject:name forKey:@"name"];

    [coder encodeInt:magicNumber forKey:@"magicNumber"];

    [coder encodeFloat:shoseSize forKey:@"shoseSize"];

    [coder encodeObject:subThingies forKey:@"subThingies"];

    }

    //解码

    initWithCode:和其他init方法一样,在对对象执行操作之前,需要使用超类对它们进行初始化。为此,可以采用

    两种方式,具体取决于父类,如果父类采用了NSCoding协议,则应该调用[super initWithCoder:decoder];

    否则,只需要调用[super init]即可。NSObject不采用NSCoding协议,因此我们可以使用简单的init方法。

    -(id) initWithCoder:(NSCoder *)  decoder{

    if(self =[super init]){

    self.name=[decoder decodeObjectForKey:@"name"];

    self.magicNumber=[decoder decodeIntForKey:@"magicNumber"];

    self.shoseSize=[decoder decodeFloatForKey:@"shoseSize"];

    self.subThingies=[decoder decodeObjectForKey:@"subThingies"];

    }

    return (self);

    }

     附加:http://blog.csdn.net/itianyi/article/details/8917026

     
     
  • 相关阅读:
    如何下载Bilibili视频
    pyqt5 主界面打开新主界面、打开Dialog、打开提示框的实现模板
    【爬坑】python3+pyqt5+pyinstaller 打包成exe的各种问题
    【PyQt5-Qt Designer】QComboBox(下拉列表框) 使用模板
    【PyQt5-Qt Designer】读取txt文件在打印
    pyqt5核心-信号与槽(第二弹)
    使用QT设计师-信号和槽signal-slot(第一弹)
    【python基础】python程序打包成.exe运行时会弹出黑框
    【pyqt5】QdateTimeEdit(日期时间)
    pyqt5-对文本样式进行操作
  • 原文地址:https://www.cnblogs.com/liuziyu/p/4182520.html
Copyright © 2011-2022 走看看