iOS

LCDataManager相关说明

####### 文章参照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;

函数用意是 把

```中存在一个```MutbaleDictionary *cacheMutableDictionary``` ,它是以```LCCACHETYPE ```中的类别为关键字建立的字典,该存储函数中的```key```则是这个```cacheMutableDictionary ```中对应```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;

上面这个方法是最细的一个清除,他是清除到类别下面的关键字对应的数据

(void)clearObjectsUnderType:(LCCACHETYPE)type;```
1
2
上面这个方法清除的是一个类别下所有的关键字包含的数据
```- (void)clearAllCache;

上面这个方法顾名思义就是清空Cache

  • 清除用法
    1
    2
    3
    [dataManager clearObjectForKey:@"order" underType: LCCacheData];
    [dataManager clearObjectsUnderType: LCCacheData];
    [dataManager clearAllCache];

华 丽 的 分 割 线 ```
1
2
3
4
5
6
7
8

-----------------------------------------------------------------------------
##disk block
disk上的存储
它包括了```NSFileManager NSUserDefaults NSKeyedArchiver```对数据 的操作,目前除了对```UIImage```的存储位置放在```tmp```中,其他数据存储位置在```Library/Caches```中

- ```NSFileManager ```上的操作
- ```NSFileManager ```存数据
  • (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
2
其他类型以此类推
- ```NSFileManager ```清空
  • (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协议后在调用