GlobalMethod+LocalDatas.m 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. //
  2. // GlobalMethod+LocalDatas.m
  3. // 乐销
  4. //
  5. // Created by 隋林栋 on 2017/1/14.
  6. // Copyright © 2017年 ping. All rights reserved.
  7. //
  8. #import "GlobalMethod+LocalDatas.h"
  9. //global method origin
  10. #import "GlobalMethod.h"
  11. //exchange key to localKey has LOCAL_KEY prefix
  12. #define EXCHANGE_LOCAL_KEY(key) (key) = [(key) hasPrefix:LOCAL_KEY_HEAD]?(key):[NSString stringWithFormat:@"%@%@",LOCAL_KEY_HEAD,(key)]
  13. @implementation GlobalMethod (LocalDatas)
  14. #pragma mark clear user default
  15. //clear local data of user
  16. + (void)clearUserDefault{
  17. NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
  18. NSDictionary * dict = [defs dictionaryRepresentation];
  19. for (id key in dict) {
  20. if ([key isKindOfClass:[NSString class]] && [key hasPrefix:LOCAL_KEY_HEAD]) {
  21. [defs removeObjectForKey:key];
  22. }
  23. }
  24. [defs synchronize];
  25. }
  26. #pragma mark 存储本地数据
  27. //model ary read write
  28. + (void)writeAry:(NSArray *)aryModels key:(NSString *)localKey{
  29. NSArray * aryFirm = [NSArray arrayWithArray:aryModels];
  30. NSMutableArray * aryMuDic = [NSMutableArray array];
  31. for (id model in aryFirm) {
  32. if ([model isKindOfClass:[NSDictionary class]]) {
  33. [aryMuDic addObject:model];
  34. }else{
  35. NSDictionary * dic = [GlobalMethod performSelector:@"dictionaryRepresentation" delegate:model object:nil isHasReturn:true];
  36. if (dic != nil) {
  37. [aryMuDic addObject:dic];
  38. }
  39. }
  40. }
  41. NSString * strJson = [GlobalMethod exchangeDicToJson:aryMuDic];
  42. [GlobalMethod writeStr:strJson forKey:localKey];
  43. }
  44. //读取model
  45. + (NSMutableArray *)readAry:(NSString *)localKey modelName:(NSString *)modelName{
  46. return [self readAry:localKey modelName:modelName exchangeToModel:nil];
  47. }
  48. + (NSMutableArray *)readAry:(NSString *)localKey modelName:(NSString *)modelName exchangeToModel:(NSString *)returnModelName{
  49. NSMutableArray * aryReturn = [NSMutableArray array];
  50. NSString * strJson = [GlobalMethod readStrFromUser:localKey];
  51. if (!isStr(strJson)) {
  52. return aryReturn;
  53. }
  54. NSArray * ary = [GlobalMethod exchangeStringToAry:strJson];
  55. if (!isAry(ary)) {
  56. return aryReturn;
  57. }
  58. NSMutableArray * aryModels = [GlobalMethod exchangeDic:ary toAryWithModelName:modelName];
  59. if (isStr(returnModelName)) {
  60. return [aryModels exchangeToModel:returnModelName];
  61. }
  62. return aryModels;
  63. }
  64. //model read write
  65. + (void)writeModel:(id)model key:(NSString *)localKey{
  66. if (!model) {
  67. return;
  68. }
  69. NSDictionary * dic = model;
  70. if ([model respondsToSelector:NSSelectorFromString(@"dictionaryRepresentation")] ) {
  71. dic = [GlobalMethod performSelector:@"dictionaryRepresentation" delegate:model object:nil isHasReturn:true];
  72. }
  73. if (dic && [dic isKindOfClass:[NSDictionary class]]) {
  74. NSString * strJson = [GlobalMethod exchangeDicToJson:dic];
  75. [GlobalMethod writeStr:strJson forKey:localKey];
  76. }
  77. }
  78. + (id)readModelForKey:(NSString *)localKey modelName:(NSString *)modelName{
  79. NSString * strJson = [GlobalMethod readStrFromUser:localKey];
  80. if (!isStr(strJson)) {
  81. return nil;
  82. }
  83. NSDictionary * dicLocal = [GlobalMethod exchangeStringToDic:strJson];
  84. if (dicLocal && [dicLocal isKindOfClass:[NSDictionary class]]) {
  85. return [self exchangeDicToModel:dicLocal modelName:modelName];
  86. }
  87. return nil;
  88. }
  89. //str read write
  90. + (void)writeStr:(NSString *)strValue forKey:(NSString *)strKey{
  91. if (isStr(strKey) ) {
  92. EXCHANGE_LOCAL_KEY(strKey);
  93. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  94. [user setObject:strValue forKey:strKey];
  95. [user synchronize];
  96. }
  97. }
  98. + (NSString *)readStrFromUser:(NSString *)strKey{
  99. if (isStr(strKey)) {
  100. EXCHANGE_LOCAL_KEY(strKey);
  101. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  102. NSString * strValue = [user objectForKey:strKey];
  103. if (strValue != nil && [strValue isKindOfClass:[NSString class]]&& strValue.length>0) {
  104. return strValue;
  105. }
  106. }
  107. return @"";
  108. }
  109. //date read write
  110. + (void)writeDate:(NSDate *)date forKey:(NSString *)strKey{
  111. EXCHANGE_LOCAL_KEY(strKey);
  112. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  113. [user setObject:date?date:@"" forKey:strKey];
  114. [user synchronize];
  115. }
  116. + (NSDate *)readDateFromUser:(NSString *)strKey{
  117. EXCHANGE_LOCAL_KEY(strKey);
  118. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  119. NSDate * dateLocal = [user objectForKey:strKey];
  120. return (dateLocal && [dateLocal isKindOfClass:[NSDate class]]) ?dateLocal:nil;
  121. }
  122. //data rea write
  123. + (void)writeDataToUser:(NSData *)data forKey:(NSString *)strKey{
  124. EXCHANGE_LOCAL_KEY(strKey);
  125. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  126. [user setObject:data forKey:strKey];
  127. [user synchronize];
  128. }
  129. + (NSData *)readDataFromUser:(NSString *)strKey{
  130. EXCHANGE_LOCAL_KEY(strKey);
  131. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  132. NSData * dataLocal = [user objectForKey:strKey];
  133. return dataLocal;
  134. }
  135. //bool read write
  136. + (void)writeBool:(BOOL)bol local:(NSString *)strKey{
  137. if (!isStr(strKey)) return;
  138. EXCHANGE_LOCAL_KEY(strKey);
  139. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  140. [user setObject:[NSNumber numberWithBool:bol] forKey:strKey];
  141. [user synchronize];
  142. }
  143. + (BOOL)readBoolLocal:(NSString *)strKey{
  144. if (!isStr(strKey)) return NO;
  145. EXCHANGE_LOCAL_KEY(strKey);
  146. NSUserDefaults * user = [NSUserDefaults standardUserDefaults];
  147. NSNumber *num = [user objectForKey:strKey];
  148. if (num == nil) return NO;
  149. return [num boolValue];
  150. }
  151. //write to file
  152. + (NSString *)writeToLocalFile:(id)response{
  153. if (!response) {
  154. return @"";
  155. }
  156. NSString * strJson = @"";
  157. if ([response isKindOfClass:NSDictionary.self]||[response isKindOfClass:NSArray.self]) {
  158. strJson = [GlobalMethod exchangeDicToJson:response];
  159. }
  160. if ([response isKindOfClass:NSString.self]) {
  161. strJson = (NSString *)response;
  162. }
  163. NSString * strPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject stringByAppendingString:@"response.json"];
  164. [strJson writeToFile:strPath atomically:true encoding:NSUTF8StringEncoding error:nil];
  165. return strPath;
  166. }
  167. @end