• 第十七篇、归档缓存模型


    简介:

      在很多的情况下,我们常常需要去缓存模型数据,比如一下简单的数据(个人信息等)。

    注意:

      1.必须需要NSCoding协议

    存盘示例:

    .h

    #import <Foundation/Foundation.h>
    
    @interface LocalData : NSObject
    
    + (instancetype)read:(NSString *)name;
    + (void)save:(NSString *)name className:(id)className;
    
    @end

    .m

    #import "LocalData.h"
    
    @implementation LocalData
    
    + (instancetype)read:(NSString *)name {
    //    NSData *_data = [[NSData alloc] initWithContentsOfFile:[self getFilePathWithModelKey:name]];
    //    //解档辅助类
    //    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:_data];
    //    //解档出数据模型Student
    //    //解码并解档出model
    //    id model = [unarchiver decodeObjectForKey:name];
    //    //关闭解档
    //    [unarchiver finishDecoding];
    //    return model;
        
        //获得保存数据
        NSData *getthemeAndAboutData = [[NSUserDefaults standardUserDefaults] objectForKey:name];
        //转成模型获取数据
        id model =   [NSKeyedUnarchiver unarchiveObjectWithData:getthemeAndAboutData];
        
        return model;
    
        
        //return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getFilePathWithModelKey:name]];
    }
    
    + (void)save:(NSString *)name className:(id)className
    {
    
    //    BOOL success = [NSKeyedArchiver archiveRootObject:className toFile:[self getFilePathWithModelKey:name]];
    //    NSLog(@"保存的状态%d",success);
        
        ///////////////////////归档
    //    //需要用NSMutableData来中中介
    //    NSMutableData *data = [[NSMutableData alloc] init];
    //    //创建归档辅助类
    //    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    //    //编码
    //    [archiver encodeObject:className forKey:name];
    //    //结束编码
    //    [archiver finishEncoding];
    //    //写入
    //    [data writeToFile:[self getFilePathWithModelKey:name] atomically:YES];
        
        
        NSData *themeAndAboutData = [NSKeyedArchiver archivedDataWithRootObject:className];
        [[NSUserDefaults standardUserDefaults] setObject:themeAndAboutData forKey:name];
        [[NSUserDefaults standardUserDefaults] synchronize];
        
    }
    
    //得到目录
    +(NSString *) getFilePathWithModelKey:(NSString *)modelkey
    {
        NSArray *array =  NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        return [[array objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.archiver",modelkey]];
        
    }
    
    @end
  • 相关阅读:
    ObjectiveC 日记⑦ 内存管理
    Jquery自定义分页插件
    C#中的静态类和静态成员
    多线程访问共同的代码或者对象:lock避免出错
    wordpress绑定新浪微博
    组态软件基础知识概述
    书籍推荐:《网站运营直通车:7天精通SEO》
    wordpress代码高亮插件推荐:AutoSyntaxHighlighter
    书籍推荐:《伟大是熬出来的:冯仑与年轻人闲话人生》
    wince平台用xml文件做配置文件
  • 原文地址:https://www.cnblogs.com/HJQ2016/p/5818165.html
Copyright © 2020-2023  润新知