zoukankan      html  css  js  c++  java
  • 实现序列化和反序列化

    // 步骤:

    //      1、对象需要支持序列化和反序列化必须遵循NSCoding协议

    //      2、实现NSCoding中的方法

    //      3、分别使用NSKeyedArchiver和NSKeyedUnarchiver类

    //         来进行序列化和反序列化

     

    #import <Foundation/Foundation.h>

    #import "DSObject.h"

     

    int main(int argc, const char * argv[]) {

        DSObject *srcObj = [[DSObject alloc] init];

        

        srcObj.name = @"张三";

        srcObj.age = 32;

        srcObj.childNames = @[@"小张三1", @"小张三2", @"小张三3"];

        

        NSLog(@"%@", srcObj);

        

        // 序列化(有直接的方法保存到文件,也可以通过NSData保存到文件)

        NSData *data = [NSKeyedArchiver archivedDataWithRootObject:srcObj];

        [data writeToFile:@"/Users/DS/Desktop/1.txt" atomically:YES];

        

        // 反序列化

        NSData *data1 = [NSData dataWithContentsOfFile:@"/Users/DS/Desktop/1.txt"];

        DSObject *desObj = [NSKeyedUnarchiver unarchiveObjectWithData:data1];

        NSLog(@"%@", desObj);

        

        [srcObj release];

        

        return 0;

    }

     

    // 编码(用于序列化)

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

        [aCoder encodeObject:_name forKey:@"name"];

        [aCoder encodeInteger:_age forKey:@"age"];

        [aCoder encodeObject:_childNames forKey:@"childNames"];

    }

     

    // 解码(用于反序列化)

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

        if (self = [self init]) {

            _name = [aDecoder decodeObjectForKey:@"name"];

            _age = [aDecoder decodeIntegerForKey:@"age"];

            _childNames = [aDecoder decodeObjectForKey:@"childNames"];

            

            [_name copy];

            [_childNames retain];

        }

        

        return self;

    }

  • 相关阅读:
    NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]
    Codeforces Round #278 (Div. 2) B. Candy Boxes [brute force+constructive algorithms]
    noj 2069 赵信的往事 [yy题 无限gcd]
    noj 2068 爱魔法的露露 [线性扫一遍]
    Codeforces Round #275 (Div. 2) B. Friends and Presents 二分+数学
    Word2007文档中怎么输入上标下标
    Linux下查找命令
    矩阵求逆
    LRC算法在人脸识别中应用
    java从txt文档读写数据
  • 原文地址:https://www.cnblogs.com/tang910103/p/5061509.html
Copyright © 2011-2022 走看看