iOS数据持久化注意点

一、nsuserdefault:
1:nsuserDefault 不能存储自定义对象, 其支持的数据格式有:NSNumber(Integer、Float、Double等)、NSString、NSDate、NSArray(成员必须也是支持的格式类型)、NSDictionary(同NSArray)。

二、归档:
1.归档保存的自定对象的重写归档方法时,需要将基本数据类型转成nsnumber对象。

2.归档需要重写两个方法:

//序列化
- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeObject:@(self.cellType) forKey:CELLTYPE];
    [coder encodeObject:self.cellContent forKey:CELLCONTENT];
    [coder encodeObject:@(self.cellHeight) forKey:CELLHEIGHT];
    [coder encodeObject:self.cellImage forKey:CELLIMAGE];
    [coder encodeObject:@(self.isHiddenPlayButton) forKey:ISHIDDENPLAYBUTTON];
    [coder encodeObject:self.cellImageUrl forKey:CELLIMAGEURL];
    [coder encodeObject:self.cellImageData forKey:CELLIMAGEDATA];
    [coder encodeObject:self.cellVideoUrl forKey:CELLVIDEOURL];
}

//反序列化
- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super init];
    if (self) {
        self.cellType = (CellType)[[coder decodeObjectForKey:CELLTYPE] integerValue];
        self.cellContent = [coder decodeObjectForKey:CELLCONTENT];
        self.cellHeight = [[coder decodeObjectForKey:CELLHEIGHT] floatValue];
        self.cellImage = [coder decodeObjectForKey:CELLIMAGE];
        self.isHiddenPlayButton = [[coder decodeObjectForKey:ISHIDDENPLAYBUTTON] boolValue];
        self.cellImageUrl = [coder decodeObjectForKey:CELLIMAGEURL];
        self.cellImageData = [coder decodeObjectForKey:CELLIMAGEDATA];
        self.cellVideoUrl = [coder decodeObjectForKey:CELLVIDEOURL];
    }
    return self;
}

3.归档只能每次保存一个自定义对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值