HWDataManager.m 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. //
  2. // HWDataManager.m
  3. // VclustersGemini
  4. //
  5. // Created by 余衡武 on 2021/11/23.
  6. // Copyright © 2021 APPLE. All rights reserved.
  7. //
  8. #import "HWDataManager.h"
  9. static HWDataManager *shareInstance = nil;
  10. @implementation HWDataManager
  11. + (instancetype)shareInstance {
  12. static dispatch_once_t onceToken;
  13. dispatch_once(&onceToken, ^{
  14. shareInstance = [[HWDataManager alloc] init];
  15. });
  16. return shareInstance;
  17. }
  18. #pragma mark NSUserDefaults
  19. + (BOOL)getBoolWithKey:(NSString*)key{
  20. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  21. return [defaults boolForKey:key];
  22. }
  23. + (void)setBoolWithKey:(NSString*)key value:(BOOL)value{
  24. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  25. [defaults setBool:value forKey:key];
  26. [defaults synchronize];
  27. }
  28. + (NSInteger)getIntegerWithKey:(NSString*)key{
  29. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  30. return [defaults integerForKey:key];
  31. }
  32. + (void)setIntegerWithKey:(NSString*)key value:(NSInteger)value{
  33. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  34. [defaults setInteger:value forKey:key];
  35. [defaults synchronize];
  36. }
  37. + (NSNumber *)getNumberWithKey:(NSString* _Nonnull)key {
  38. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  39. return [defaults valueForKey:key];
  40. }
  41. + (void)setNumberWithKey:(NSString* _Nonnull)key value:(NSNumber *)value {
  42. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  43. [defaults setValue:value forKey:key];
  44. [defaults synchronize];
  45. }
  46. + (NSString*)getStringWithKey:(NSString*)key{
  47. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  48. return [defaults stringForKey:key];
  49. }
  50. + (void)setStringWithKey:(NSString*)key value:(NSString*)value{
  51. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  52. [defaults setObject:value forKey:key];
  53. [defaults synchronize];
  54. }
  55. + (nullable id)getObjectWithKey:(NSString* _Nonnull)key {
  56. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  57. return [defaults objectForKey:key];
  58. }
  59. + (void)setObjectWithKey:(NSString* _Nonnull)key value:(nullable id)value {
  60. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  61. [defaults setObject:value forKey:key];
  62. [defaults synchronize];
  63. }
  64. #pragma mark Plist
  65. // 读取Plist缓存数据
  66. + (nullable id)readObjectFromPlistFolder:(NSString *)plistFolder {
  67. // 文件完整路径
  68. NSString *fileName = [NSString stringWithFormat:@"%@.plist", plistFolder.lastPathComponent];
  69. NSString *filePlist = [plistFolder stringByAppendingPathComponent:fileName];
  70. // 文件夹路径安全校验
  71. if (![[NSFileManager defaultManager] fileExistsAtPath:filePlist]) {
  72. return [NSMutableArray array];
  73. }
  74. // 读取plist数据
  75. id object = [NSKeyedUnarchiver unarchiveObjectWithFile:filePlist];
  76. HLog(@"plist数据读取成功:%@", plistFolder);
  77. return object;
  78. }
  79. // 储存Plist缓存数据
  80. + (void)archiveObject:(nullable id)object toPlistFolder:(NSString *)plistFolder {
  81. if (!object) {
  82. return;
  83. }
  84. // 文件夹路径安全校验
  85. NSError *error;
  86. if (![[NSFileManager defaultManager] fileExistsAtPath:plistFolder]) {
  87. [[NSFileManager defaultManager] createDirectoryAtPath:plistFolder withIntermediateDirectories:YES attributes:nil error:&error];
  88. }
  89. // 文件完整路径
  90. NSString *fileName = [NSString stringWithFormat:@"%@.plist", plistFolder.lastPathComponent];
  91. NSString *filePlist = [plistFolder stringByAppendingPathComponent:fileName];
  92. // 存储plist数据
  93. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object];
  94. BOOL finish = [data writeToFile:filePlist atomically:YES];
  95. if (finish) {
  96. HLog(@"plist数据缓存成功:%@", plistFolder);
  97. }else {
  98. HLog(@"plist数据缓存失败:%@", plistFolder);
  99. }
  100. }
  101. + (nullable id)readObjectFromPlistPath:(NSString *)plistPath {
  102. // 读取plist数据
  103. id object = [NSKeyedUnarchiver unarchiveObjectWithFile:plistPath];
  104. HLog(@"plist数据读取成功:%@", plistPath);
  105. return object;
  106. }
  107. + (void)archiveObject:(nullable id)object toPlistPath:(NSString *)plistPath {
  108. if (!object) {
  109. return;
  110. }
  111. // 存储plist数据
  112. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:object];
  113. BOOL finish = [data writeToFile:plistPath atomically:YES];
  114. if (finish) {
  115. HLog(@"plist数据缓存成功:%@", plistPath);
  116. }else {
  117. HLog(@"plist数据缓存失败:%@", plistPath);
  118. }
  119. }
  120. + (NSString *)pathForDeviceDriftWithAccount:(NSString *)account sn:(NSString *)sn {
  121. NSString *fileFolder = [NSString stringWithFormat:@"%@/Drift",sn];
  122. return [self documentPathForAccount:account fileFolder:fileFolder];
  123. }
  124. /**
  125. * 文件路径:DocumentPath/account/fileFolder
  126. * account 路径不需要拼接账号时 传@""
  127. */
  128. + (NSString *)documentPathForAccount:(NSString *)account fileFolder:(NSString *)fileFolder {
  129. NSString *path = DocumentPath;
  130. if (account.length != 0) {
  131. path = [NSString stringWithFormat:@"%@/%@/",DocumentPath,account];
  132. }
  133. if ([fileFolder containsString:@"/"]) {
  134. NSString *path1 = [path stringByAppendingPathComponent:fileFolder];
  135. path1 = [path1 stringByDeletingLastPathComponent];
  136. NSError *error;
  137. if (![[NSFileManager defaultManager] fileExistsAtPath:path1]) {
  138. [[NSFileManager defaultManager] createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:&error];
  139. }
  140. }else{
  141. NSError *error;
  142. if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
  143. [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
  144. }
  145. }
  146. return [path stringByAppendingPathComponent:fileFolder];
  147. }
  148. /**
  149. * 文件路径:CachesPath/account/fileFolder
  150. * account 路径不需要拼接账号时 传@""
  151. */
  152. + (NSString *)cachesPathForAccount:(NSString *)account fileFolder:(NSString *)fileFolder {
  153. NSString *path = CachesPath;
  154. if (account.length != 0) {
  155. path = [NSString stringWithFormat:@"%@/%@/",CachesPath,account];
  156. }
  157. if (fileFolder.length != 0) {
  158. NSString *path1 = [path stringByAppendingPathComponent:fileFolder];
  159. NSError *error;
  160. if (![[NSFileManager defaultManager] fileExistsAtPath:path1]) {
  161. [[NSFileManager defaultManager] createDirectoryAtPath:path1 withIntermediateDirectories:YES attributes:nil error:&error];
  162. }
  163. }else{
  164. NSError *error;
  165. if (![[NSFileManager defaultManager] fileExistsAtPath:path]) {
  166. [[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:&error];
  167. }
  168. }
  169. return [path stringByAppendingPathComponent:fileFolder];
  170. }
  171. #pragma mark 截图
  172. /**保存截图保存路径*/
  173. + (NSString *)writeScreenShotImageToLocal:(UIImage *)image withName:(NSString *)fileName {
  174. // 文件夹路径安全校验
  175. NSString *fileFolder = kPath_ScreenShot;
  176. NSError *error;
  177. if (![[NSFileManager defaultManager] fileExistsAtPath:fileFolder]) {
  178. [[NSFileManager defaultManager] createDirectoryAtPath:fileFolder withIntermediateDirectories:YES attributes:nil error:&error];
  179. }
  180. // 截图写入本地
  181. NSString *sandboxPath = [NSString stringWithFormat:@"%@/%@.png",fileFolder,fileName];
  182. NSData *imageData = UIImagePNGRepresentation(image);
  183. BOOL isSuccess = [imageData writeToFile:sandboxPath atomically:YES];
  184. HLog(@"保存相册图片文件到Caches是否成功:%d fileName:%@", isSuccess,fileName);
  185. if (isSuccess) {
  186. return sandboxPath;
  187. }else {
  188. return @"";
  189. }
  190. }
  191. #pragma mark 沙盒路径
  192. // 读取指定路径下的文件or文件夹
  193. + (NSArray *)getFileOrFolderAtPath:(NSString *)basePath {
  194. NSError *error = nil;
  195. NSArray *tempArr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:basePath error:&error];
  196. return tempArr;
  197. }
  198. + (NSString *)pathForDevicePhotoWithAccount:(NSString *)account deviceId:(NSString *)deviceId {
  199. NSString *fileFolder = [NSString stringWithFormat:@"%@/Thumbnail",deviceId];
  200. return [self documentPathForAccount:account fileFolder:fileFolder];
  201. }
  202. #pragma mark FMDB数据库 - Model
  203. @end