一同事写的:
//检测缓存数据
+ (void)checkCacheDataCompletionHandler:(void (^)(NSDictionary* dic, NSError* connectionError)) handler Url:(NSString *)url Pramater:(NSDictionary *)pram Error:(NSError *)connectionError{
//如果网络未连接:AFN
//如果这个接口有缓存的数据就取到缓存的数据
NSString *thekey = [self getCacheskeyWithInterface:url parameters:pram];
NSString *key = [self getCachesPathWithKey:thekey];
NSDictionary *dic = [self getNetCacheData:key];
//返回数据
if (dic) {
handler(dic,nil);
}else {
handler(nil, connectionError);
}
}
+ (NSString *)getCachesPathWithKey:(NSString *)key{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDirectory = [paths objectAtIndex:0];
NSString *path = [cachesDirectory stringByAppendingPathComponent:@"TCMCaches"];
NSString *str = [path stringByAppendingPathComponent:key];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]) {
[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:0];
}
return str;
}
+ (NSString *)getCacheskeyWithInterface:(NSString *)interface parameters:(NSDictionary *)parameters{
interface = [interface stringByReplacingOccurrencesOfString:@"/" withString:@""];
NSMutableString *str = [NSMutableString string];
[parameters enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
[str appendFormat:@"%@%@", key, obj];
}];
return [NSString stringWithFormat:@"%@%@", interface,str];
}
//取到数据缓存数据
+ (NSDictionary *)getNetCacheData:(NSString *)file {
NSDictionary *dic = [NSKeyedUnarchiver unarchiveObjectWithFile:file];
return dic;
}
//保存数据缓存
+ (void)saveNetCacheData:(id)data Url:(NSString *)url Pramater:(NSDictionary *)pram{
dispatch_async(dispatch_get_main_queue(), ^{
NSString *thekey = [self getCacheskeyWithInterface:url parameters:pram];
NSString *path = [self getCachesPathWithKey:thekey];
[NSKeyedArchiver archiveRootObject:data toFile:path];
});
}