Simple Cache impl base on NSCoding
//
// FWCache.m
// CacheMeIfYouCan
//
// Created by fanwu on 15/8/7.
// Copyright (c) 2015年 ND. All rights reserved.
//
#import "FWCache.h"
#import "NSString+MD5.h"
#define kCacheFileNameExtend @"cache"
#define kCacheDirectoryExtend @"caches"
@interface FWCache ()
@property(copy, nonatomic) NSString * name;
@end
@implementation FWCache
static BOOL _enabled = YES;
+ (void)enable{
_enabled = YES;
}
+ (void)disable{
_enabled = NO;
}
- (instancetype)initWithName:(NSString *)name{
self = [super init];
if (!_enabled|| !name) {
self = nil;
}
if (!self) {
return nil;
}
return self;
}
- (NSString *)hashedName{
return [self.name MD5String];
}
- (NSString *)cacheFileName{
return [self.hashedName stringByAppendingString:kCacheFileNameExtend];
}
- (NSString *)appCacheDirectory{
NSArray * searchPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
return searchPath.firstObject;
}
- (NSString *)cacheLocation{
return [[self.appCacheDirectory stringByAppendingString:kCacheDirectoryExtend] stringByAppendingPathComponent:self.cacheFileName];
}
- (void)saveObject:(id<NSCopying>)object{
[NSKeyedArchiver archiveRootObject:object toFile:self.cacheLocation];
}
- (id<NSCoding>)fetchObject{
return [NSKeyedUnarchiver unarchiveObjectWithFile:self.cacheLocation];
}
@end