iOS关于对象序列化

2016-11-12  本文已影响0人  米奈希尔

1.实现NSCoding协议

//NSCoding编码协议,一个对象实现了NSCoding协议方法,才能被转换成为二进制数据。
@interface People : NSObject<NSCoding>

//编码方法,当对象被编码成二进制数据时调用。
-(void)encodeWithCoder:(NSCoder *)aCoder {
    //在编码方法中,需要对对象的每一个属性进行编码。
    [aCoder encodeObject:_name forKey:@"name"];
    [aCoder encodeInt:_age forKey:@"age"];
    [aCoder encodeBool:_sex forKey:@"sex"];
}

//解码方法,当把二进制数据转成对象时调用。
-(instancetype)initWithCoder:(NSCoder *)aDecoder {
    //如果父类也遵守NSCoding协议,那么需要写self = [super initWithCoder]
    self = [super init];
    if (self) {
        _name = [[aDecoder decodeObjectForKey:@"name"] copy];
        _age = [aDecoder decodeIntForKey:@"age"];
        _sex = [aDecoder decodeBoolForKey:@"sex"];
    }
    return self;
}

//description  NSLog输出时显示的内容
-(NSString *)description {
    return [NSString stringWithFormat:@"姓名:%@,年龄:%d,性别:%@",_name,_age,_sex?@"男":@"女"];
}

2.写入本地

3.读取

上一篇下一篇

猜你喜欢

热点阅读