ifish/Ifish/Utinitys/DataCenter/DataCenter.m

86 lines
2.7 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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