// // DataCenter.m // 爱鱼奇 // // Created by imac on 15/9/21. // Copyright © 2015年 imac. All rights reserved. // #import "DataCenter.h" @implementation DataCenter { NSMutableDictionary *_dict; } //获取单例 +(instancetype)defaultDtacenter{ static DataCenter*center=nil; @synchronized(self){ if (center==nil) { center=[[self alloc]init]; } } return center; } //初始化 -(instancetype)init{ if (self=[super init]) { NSString*filePath=[self getFullFilePathWithName:@"myData.archiver"]; //检测文件是否存在 //保证 _dict指向的对象 和 本地归档文件数据同步 //存在 //读档 /解归档 //成员变量变量是 对象指针 必须要拥有对象的绝对使用权 否则的话 对象可能随时释放 if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) { _dict=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; }else{ //不存在 //创建 空的可变字典 //成员变量变量是 对象指针 必须要拥有对象的绝对使用权 _dict=[[NSMutableDictionary alloc]init]; } } return self; } -(void)cacheinit:(NSString*)useid { NSArray*arr=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); self.cache = [[EGOCache alloc] initWithCacheDirectory:[arr.firstObject stringByAppendingPathComponent:[NSString stringWithFormat:@"ifish/%@",[CommonUtils getNotNilStr:useid]]]]; [self.cache setDefaultTimeoutInterval:864000000]; } //根据文件名 获取指定文件名的在沙盒Documents的 全路径 -(NSString*)getFullFilePathWithName:(NSString *)name{ //方法1 // NSString *docPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; //方法2:获取Documents //注:NSDocumentDirectory 路径结构 var/mobile/Containers/Data/Application/FC53241A-883C-4770-9117-694E00A41173/Documents/myData.archiver // NSDocumentationDirectory /var/mobile/Containers/Data/Application/CFE1A228-F736-4018-B100-C8EBCD645630/Library/Documentation/myData.archiver NSArray*arr=NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES); NSString*docPath=arr[0]; //检测Documents是否存在 if ([[NSFileManager defaultManager]fileExistsAtPath:docPath]) { }else{ // NSLog(@"Document不存在"); } //拼接 文件在 Documents下的路径 return [docPath stringByAppendingPathComponent:name]; } -(void)setValue:(id)value forKey:(NSString*)key{ //先存入字典 [_dict setObject:value forKey:key]; //立即归档 保证字典 和归档数据同步 BOOL ret=[NSKeyedArchiver archiveRootObject:_dict toFile:[self getFullFilePathWithName:@"myData.archiver"]]; if (!ret) { // NSLog(@"归档失败"); } } //获取数据 -(id)valueForKey:(NSString*)key{ //从字典获取 _dict 和本地归档数据是同步的 return _dict[key]; } @end