YYCache icon indicating copy to clipboard operation
YYCache copied to clipboard

YYCache保存模型后再取出来的问题

Open AbnerPei opened this issue 8 years ago • 3 comments

你好!今天尝试用YYCache缓存一个模型!结果取的时候模型对象指针存在,但对应属性为空?于是就去这样设置下

//SelectShop.h
@interface SelectShop : NSObject<NSCoding>

//SelectShop.m
@implementation SelectShop

-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super init]) {
       self.name = [aDecoder decodeObjectForKey:@"name"];
    }
    return self;
}
-(void)encodeWithCoder:(NSCoder *)aCoder
{
     [aCoder encodeObject:self.name forKey:@"name"];
}
@end

如上,在取的时候只有“name”属性有值,其它都为nil! 是不是模型类都要这样(如SelectShop.m里面,每个属性都归档解档)写才行??? 是不是模型类都要这样(如SelectShop.m里面,每个属性都归档解档)写才行??? 是不是模型类都要这样(如SelectShop.m里面,每个属性都归档解档)写才行??? 下面是我的存取方法

//存
 //1.用YYCache创建一个以KLCPDatabaseKey命名的数据库
    YYCache *cache = [YYCache cacheWithName:KLCPDatabaseKey];
    //2.把模型存储到数据库中
    [cache setObject:aShop forKey:KCurrentShopKey withBlock:^{
        LCPLog(@"存储当前model信息成功");
    }];

//取
//1.获取数据库
    YYCache *cache =  [YYCache cacheWithName:KLCPDatabaseKey];
    [cache objectForKey:KCurrentShopKey withBlock:^(NSString * _Nonnull key, id<NSCoding>  _Nonnull object) {
        SelectShop *aShop = (SelectShop *)object;
         LCPLog(@"从本地数据库读取数据%@----%@",aShop,aShop.name);
    }];

AbnerPei avatar Jul 29 '16 13:07 AbnerPei

是的,对象必须要自己实现完整的 NSCoding 协议。

ibireme avatar Jul 31 '16 23:07 ibireme

yymodel 里面有快速序列化的方法的 @chinesemanbobo

devjiangzhou avatar Oct 08 '16 07:10 devjiangzhou

嗯嗯,后来我用runtime在模型里序列化了下。

发自网易邮箱大师 在2016年10月08日 15:27,jiangzhoubai 写道:

yymodel 里面有快速序列化的方法的 @chinesemanbobo

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

AbnerPei avatar Oct 08 '16 07:10 AbnerPei