123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- //
- // GlobalMethod+LocalDatas.m
- // 乐销
- //
- // Created by 隋林栋 on 2017/1/14.
- // Copyright © 2017年 ping. All rights reserved.
- //
- #import "GlobalMethod+LocalDatas.h"
- //global method origin
- #import "GlobalMethod.h"
- //exchange key to localKey has LOCAL_KEY prefix
- #define EXCHANGE_LOCAL_KEY(key) (key) = [(key) hasPrefix:LOCAL_KEY_HEAD]?(key):[NSString stringWithFormat:@"%@%@",LOCAL_KEY_HEAD,(key)]
- @implementation GlobalMethod (LocalDatas)
- #pragma mark clear user default
- //clear local data of user
- + (void)clearUserDefault{
- NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
- NSDictionary * dict = [defs dictionaryRepresentation];
- for (id key in dict) {
- if ([key isKindOfClass:[NSString class]] && [key hasPrefix:LOCAL_KEY_HEAD]) {
- [defs removeObjectForKey:key];
- }
- }
- [defs synchronize];
- }
- #pragma mark 存储本地数据
- //model ary read write
- + (void)writeAry:(NSArray *)aryModels key:(NSString *)localKey{
- NSArray * aryFirm = [NSArray arrayWithArray:aryModels];
- NSMutableArray * aryMuDic = [NSMutableArray array];
- for (id model in aryFirm) {
- if ([model isKindOfClass:[NSDictionary class]]) {
- [aryMuDic addObject:model];
- }else{
- NSDictionary * dic = [GlobalMethod performSelector:@"dictionaryRepresentation" delegate:model object:nil isHasReturn:true];
- if (dic != nil) {
- [aryMuDic addObject:dic];
- }
- }
- }
- NSString * strJson = [GlobalMethod exchangeDicToJson:aryMuDic];
- [GlobalMethod writeStr:strJson forKey:localKey];
- }
- //读取model
- + (NSMutableArray *)readAry:(NSString *)localKey modelName:(NSString *)modelName{
- return [self readAry:localKey modelName:modelName exchangeToModel:nil];
- }
- + (NSMutableArray *)readAry:(NSString *)localKey modelName:(NSString *)modelName exchangeToModel:(NSString *)returnModelName{
- NSMutableArray * aryReturn = [NSMutableArray array];
- NSString * strJson = [GlobalMethod readStrFromUser:localKey];
- if (!isStr(strJson)) {
- return aryReturn;
- }
- NSArray * ary = [GlobalMethod exchangeStringToAry:strJson];
- if (!isAry(ary)) {
- return aryReturn;
- }
- NSMutableArray * aryModels = [GlobalMethod exchangeDic:ary toAryWithModelName:modelName];
- if (isStr(returnModelName)) {
- return [aryModels exchangeToModel:returnModelName];
- }
- return aryModels;
- }
- //model read write
- + (void)writeModel:(id)model key:(NSString *)localKey{
- if (!model) {
- return;
- }
- NSDictionary * dic = model;
- if ([model respondsToSelector:NSSelectorFromString(@"dictionaryRepresentation")] ) {
- dic = [GlobalMethod performSelector:@"dictionaryRepresentation" delegate:model object:nil isHasReturn:true];
- }
- if (dic && [dic isKindOfClass:[NSDictionary class]]) {
- NSString * strJson = [GlobalMethod exchangeDicToJson:dic];
- [GlobalMethod writeStr:strJson forKey:localKey];
- }
- }
- + (id)readModelForKey:(NSString *)localKey modelName:(NSString *)modelName{
- NSString * strJson = [GlobalMethod readStrFromUser:localKey];
- if (!isStr(strJson)) {
- return nil;
- }
- NSDictionary * dicLocal = [GlobalMethod exchangeStringToDic:strJson];
- if (dicLocal && [dicLocal isKindOfClass:[NSDictionary class]]) {
- return [self exchangeDicToModel:dicLocal modelName:modelName];
- }
- return nil;
- }
- //str read write
- + (void)writeStr:(NSString *)strValue forKey:(NSString *)strKey{
- if (isStr(strKey) ) {
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- [user setObject:strValue forKey:strKey];
- [user synchronize];
- }
- }
- + (NSString *)readStrFromUser:(NSString *)strKey{
- if (isStr(strKey)) {
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- NSString * strValue = [user objectForKey:strKey];
- if (strValue != nil && [strValue isKindOfClass:[NSString class]]&& strValue.length>0) {
- return strValue;
- }
- }
- return @"";
- }
- //date read write
- + (void)writeDate:(NSDate *)date forKey:(NSString *)strKey{
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- [user setObject:date?date:@"" forKey:strKey];
- [user synchronize];
- }
- + (NSDate *)readDateFromUser:(NSString *)strKey{
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- NSDate * dateLocal = [user objectForKey:strKey];
- return (dateLocal && [dateLocal isKindOfClass:[NSDate class]]) ?dateLocal:nil;
- }
- //data rea write
- + (void)writeDataToUser:(NSData *)data forKey:(NSString *)strKey{
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- [user setObject:data forKey:strKey];
- [user synchronize];
- }
- + (NSData *)readDataFromUser:(NSString *)strKey{
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- NSData * dataLocal = [user objectForKey:strKey];
- return dataLocal;
- }
- //bool read write
- + (void)writeBool:(BOOL)bol local:(NSString *)strKey{
- if (!isStr(strKey)) return;
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- [user setObject:[NSNumber numberWithBool:bol] forKey:strKey];
- [user synchronize];
- }
- + (BOOL)readBoolLocal:(NSString *)strKey{
- if (!isStr(strKey)) return NO;
- EXCHANGE_LOCAL_KEY(strKey);
- NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
- NSNumber *num = [user objectForKey:strKey];
- if (num == nil) return NO;
- return [num boolValue];
- }
- //write to file
- + (NSString *)writeToLocalFile:(id)response{
- if (!response) {
- return @"";
- }
- NSString * strJson = @"";
- if ([response isKindOfClass:NSDictionary.self]||[response isKindOfClass:NSArray.self]) {
- strJson = [GlobalMethod exchangeDicToJson:response];
- }
- if ([response isKindOfClass:NSString.self]) {
- strJson = (NSString *)response;
- }
- NSString * strPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingString:@"response.json"];
- [strJson writeToFile:strPath atomically:true encoding:NSUTF8StringEncoding error:nil];
- return strPath;
- }
- @end
|