iOS 【网络缓存简单封装】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fenghuangjc/article/details/80935116

在APP中,如果没有做缓存,一旦没有网络,展示界面时,可能会无法使用,有些界面无法展示。
如果做缓存,还可以每次加载数据前,先加载本地数据,再请求,如果请求成功,就刷新数据;没有再展示旧数据。而且能加上数据的更新时间,后台就能判断是否返回数据,减小服务器压力。

由于是简化版,所以就直接上代码了

//
//  JCDataCache.h
//  CacheTest
//
//  Created by Jin on 2018/7/6.
//  Copyright © 2018年 金城. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface JCDataCache : NSObject

+(instancetype)getInstance;

/**
 缓存数据

 @param url 网络数据url
 @param jsonDict 请求成功后返回的数据
 @return 是否存储成功
 */
+(BOOL)saveDataUrl:(NSString *)url jsonDict:(NSDictionary *)jsonDict;

/**
 获取缓存的数据

 @param url 网络数据url
 @return 缓存的数据
 */
+(NSDictionary *)getData:(NSString *)url;

@end
//
//  JCDataCache.m
//  CacheTest
//
//  Created by Jin on 2018/7/6.
//  Copyright © 2018年 金城. All rights reserved.
//

#import "JCDataCache.h"

@implementation JCDataCache

//缓存数据
+(BOOL)saveDataUrl:(NSString *)url jsonDict:(NSDictionary *)jsonDict{
    NSString *configFile = [self getPath:url];
    BOOL isSucces = [jsonDict writeToFile:configFile atomically:YES];
    return isSucces;
}
//获取缓存的数据
+(NSDictionary *)getData:(NSString *)url{
    NSString *configFile = [self getPath:url];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:configFile];
    return dict;
}

//生成文件路径
+(NSString *)getPath:(NSString *)url{
    NSFileManager *fileManager = [[NSFileManager alloc]init];
    NSString *pathDocuments = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject;
    NSString *createPath = [pathDocuments stringByAppendingPathComponent:@"UserData"];
    if (![[NSFileManager defaultManager] fileExistsAtPath:createPath]) {
        [fileManager createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];
    }
    //创建文件
    NSString *tempStrUrl = [url stringByReplacingOccurrencesOfString:@"." withString:@""];//去掉“”
    tempStrUrl = [tempStrUrl stringByReplacingOccurrencesOfString:@"/" withString:@""];//去掉"/"
    NSString *configFile = [createPath stringByAppendingPathComponent:tempStrUrl];
    return configFile;
}

@end

猜你喜欢

转载自blog.csdn.net/fenghuangjc/article/details/80935116