####### 文章参照cucuz的数据存储Library
类 的目的
方便项目当中数据的存储,提供简单的接口供使用,根据存储的位置划分可以分为缓存和本地存储,
其中包括
NSArray, NSDictionary, NSData,NSString,UIImage 等常用数据类型,自定义Object(自行实现NSCoding协议)
类的函数介绍
- 类初始化(单例)
1 | LCDataManager *dataManager = [LCDataManager shareManager]; |
首先,我们创建一个对象,下文将以它作为存储的一个依据
##Cache block
####### 文章参照cucuz的数据存储Library
类 的目的
方便项目当中数据的存储,提供简单的接口供使用,根据存储的位置划分可以分为缓存和本地存储,
其中包括
NSArray, NSDictionary, NSData,NSString,UIImage 等常用数据类型,自定义Object(自行实现NSCoding协议)
类的函数介绍
- 类初始化(单例)
1 | LCDataManager *dataManager = [LCDataManager shareManager]; |
首先,我们创建一个对象,下文将以它作为存储的一个依据
##Cache block
- Cache的存储
1 | - (void)putObject:(id)object inKey:(NSString *)key underType:(LCCACHETYPE)type; |
函数用意是 把1
2
3
其中```LCCACHETYPE```是提供的数据分类
typedef NS_ENUM(NSInteger, LCCACHETYPE)
{
LCCacheImage = 0,
LCCacheData = 1,
LCCacheFile = 2,
LCCacheTmp = 3,
LCCacheNeverRelease = 4,
};1
- ```putObject```用法
NSArray *CacheLists = @[@”老大”,@”老二”,@”老三”];
BOOL ret = [dataManager putObject:CacheLists inKey:@”order” underType:LCCacheData];1
2
3
4
5
6
7其他类型以此类推
- Cache的获取
```- (id)getObjectForKey:(NSString *)key underType:(LCCACHETYPE)type;
这个就是上面存储函数对应的一个get函数,他的参数和上面函数是一样的,不过多说明
1
2
3
4
5
6
7
8
9
10
11
NSArray *fetchCacheLists = [dataManager getObjectForKey:@"order"] underType: LCCacheData;
其他类型以此类推
- Cache的清除
这里提供了3个清除方法,是针对需要清除的模块的范围划分的:
```- (void)clearObjectForKey:(NSString *)key underType:(LCCACHETYPE)type;
上面这个方法是最细的一个清除,他是清除到类别下面的关键字对应的数据1
2上面这个方法清除的是一个类别下所有的关键字包含的数据
```- (void)clearAllCache;
上面这个方法顾名思义就是清空Cache
- 清除用法
1
2
3[dataManager clearObjectForKey:@"order" underType: LCCacheData];
[dataManager clearObjectsUnderType: LCCacheData];
[dataManager clearAllCache];
1 |
|
- (BOOL)storeImage:(UIImage )image withFileName:(NSString )fileName;
- (BOOL)storeArray:(NSArray )array withFileName:(NSString )fileName;
- (BOOL)storeDictionary:(NSDictionary )dictionary withFileName:(NSString )fileName;
- (BOOL)storeData:(NSData )data withFileName:(NSString )fileName;
1
它的用法
NSArray *diskLists = @[@”disk_1”,@”disk_2”,@”disk_3”];
BOOL ret = [dataManager storeArray:diskLists withFileName:@”order”];1
2其他类型以此类推
- ```NSFileManager ```取数据
- (UIImage )fetchImageNamedString:(NSString )name;
- (NSArray )fetchArrayNamedString:(NSString )name;
- (NSDictionary )fetchDictionaryNamedString:(NSString )name;
- (NSData )fetchDataNamedString:(NSString )name;
1
它的用法
NSArray *fetchDiskLists = [dataManager fetchArrayNameString:@”order”];1
2其他类型以此类推
- ```NSFileManager ```删数据
- (BOOL)removeImageNamedString:(NSString *)name;
- (BOOL)removeArrayNamedString:(NSString *)name;
- (BOOL)removeDictionaryNamedString:(NSString *)name;
- (BOOL)removeDataNamedString:(NSString *)name;
1
它的用法
BOOL ret = [dataManager removeArrayNameString:@”order”];
1 | 其他类型以此类推 |
- (BOOL)clearDiskUnderImages;
- (BOOL)clearDiskUnderDatas;
- (void)clearAllDataOnDisk;
1
它的用法
BOOL ret = [dataManager clearDiskUnderDatas];1
2
3
4
5其中```clearDiskUnderDatas```是清除Data目录中所有数据;
```clearDiskUnderImages```是清除Image目录中所有数据
```clearAllDataOnDisk```是清除Disk上所有数据
- ```NSFileManager ```获取数据大小
- (NSString*)imageOndiskSize;
- (NSString*)dataOndiskSize;
(NSString*)tmpOndiskSize;
1
2- ```NSUserDefaults ```上的操作
- ```NSUserDefaults ```存数据(BOOL)storeValue:(id)value keyValue:(NSString*)key;
1
- ```NSUserDefaults ```取数据
(id)fetchValueUnderKeyValue:(NSString *)key;
1
- ```NSUserDefaults ```用法
BOOL ret = [dataManager storeValue:@”LinkAge” keyValue:@”Co.,Ltd.”];
NSString *corp = [dataManager fetchValueUnderKeyValue:@”Co.,Ltd.”];1
2- ```NSKeyedArchiver ```上的操作(对有序列化要求的数据提供存储方法)
- ```NSKeyedArchiver ```存数据
(BOOL)storeObject:(id)object withFileName:(NSString *)fileName;
1
- ```NSKeyedArchiver ```取数据
(id)fetchObjectNamedString:(NSString *)name;
1
2
3
4- ```NSKeyedArchiver ```删数据
放在```NSFileManager ```对Data操作一致 他们的存储目录一样
- ```NSKeyedArchiver ```用法
NSDictionary dic …{为后台返回回来的jsonDic}
BOOL ret = [dataManager storeObject:dic withFileName:@”washCarList”];
NSDictionary fetchDic = [dataManager fetchObjectNamedString:@”washCarList”];`
其余自定义类需要调用函数的 完成NSCoding协议后在调用