Files
ifish/Ifish/Utinitys/DataCenter/DataCenter.m
T
2017-08-15 16:59:01 +08:00

86 lines
2.7 KiB
Objective-C

//
// 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;
}
//根据文件名 获取指定文件名的在沙盒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