RAConvertor.m 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. //
  2. // RAConvertor.m
  3. // RedAnt Mobile
  4. //
  5. // Created by Ray on 08/09/2017.
  6. // Copyright © 2017 Ray. All rights reserved.
  7. //
  8. #import "RAConvertor.h"
  9. #import "const.h"
  10. #import "RAUtils.h"
  11. @implementation RAConvertor
  12. +(NSString*)DataTOjsonString:(id)object
  13. {
  14. NSString *jsonString = nil;
  15. NSError *error;
  16. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
  17. options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
  18. error:&error];
  19. if (! jsonData) {
  20. DebugLog(@"Got an error: %@", error);
  21. } else {
  22. jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  23. }
  24. return jsonString;
  25. }
  26. +(id) data2dict:(NSData*) data
  27. {
  28. return [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
  29. }
  30. +(NSArray*)Dict2KVArray:(NSDictionary*) dict trim:(bool)trim
  31. {
  32. NSMutableArray* ret = [NSMutableArray new];
  33. for(NSString* key in [dict allKeys])
  34. {
  35. NSMutableDictionary* kv = [NSMutableDictionary new];
  36. kv[@"key"] = key;
  37. if(trim)
  38. {
  39. if([dict valueForKey:key]==nil)
  40. continue;
  41. NSString* val = [NSString stringWithFormat:@"%@",[dict valueForKey:key]];
  42. if(val.length==0)
  43. continue;
  44. }
  45. kv[@"value"] = [dict valueForKey:key];
  46. [ret addObject:kv];
  47. }
  48. return ret;
  49. }
  50. +(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator trim:(bool) btrim
  51. {
  52. if(arr.count==0)
  53. return nil;
  54. NSMutableArray * marr = [arr mutableCopy];
  55. begin:
  56. for (NSString* item in marr) {
  57. if(item.length==0 )
  58. if( btrim)
  59. {
  60. [marr removeObject:item];
  61. goto begin;
  62. }
  63. }
  64. NSString * ret = [marr componentsJoinedByString:separator];
  65. return ret;
  66. }
  67. +(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator trim:(bool) btrim brackets:(NSString*)brackets
  68. {
  69. if(brackets!=nil)
  70. separator = [NSString stringWithFormat:@"%@%@%@",brackets,separator,brackets];
  71. NSMutableArray * marr = [arr mutableCopy];
  72. begin:
  73. for (NSString* item in marr) {
  74. if(item.length==0 )
  75. if( btrim)
  76. {
  77. [marr removeObject:item];
  78. goto begin;
  79. }
  80. }
  81. NSString * ret = [marr componentsJoinedByString:separator];
  82. if(brackets!=nil)
  83. ret = [NSString stringWithFormat:@"%@%@%@",brackets,ret,brackets];
  84. return ret;
  85. }
  86. +(NSData*) arr2data:(NSArray*) arr
  87. {
  88. if(arr==nil)
  89. return nil;
  90. // [self dict2data:arr];
  91. // NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
  92. NSData *data =[NSKeyedArchiver archivedDataWithRootObject:arr requiringSecureCoding:false error:nil];
  93. return data;
  94. }
  95. +(NSArray*) data2arr:(NSData*) data
  96. {
  97. if(data == nil)
  98. return nil;
  99. NSError* err;
  100. NSArray *array =[NSKeyedUnarchiver unarchivedObjectOfClasses:[NSSet setWithObjects:NSDictionary.class,NSArray.class,nil] fromData:data error:&err];
  101. // NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  102. return array;
  103. }
  104. +(NSString*) separateNumber:(double) num
  105. {
  106. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  107. [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
  108. NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
  109. // [formatter setCurrencySymbol:@"$"];
  110. [formatter setGroupingSeparator:groupingSeparator];
  111. [formatter setGroupingSize:3];
  112. [formatter setAlwaysShowsDecimalSeparator:NO];
  113. [formatter setUsesGroupingSeparator:YES];
  114. NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:num]];
  115. return formattedString;
  116. }
  117. +(NSString*) currencyNumber:(double) num
  118. {
  119. // [self separateNumber:1234.56];
  120. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  121. [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
  122. NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
  123. [formatter setCurrencySymbol:@"$"];
  124. [formatter setGroupingSeparator:groupingSeparator];
  125. [formatter setGroupingSize:3];
  126. [formatter setAlwaysShowsDecimalSeparator:NO];
  127. [formatter setUsesGroupingSeparator:YES];
  128. NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:num]];
  129. return formattedString;
  130. }
  131. +(NSData*) dict2data:(id) dict
  132. {
  133. if(dict==nil)
  134. return nil;
  135. // 将NSDictionary转化为NSData
  136. NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil];
  137. return data;
  138. }
  139. +(id) string2dict:(NSString*) str
  140. {
  141. if(str==nil||(NSNull *)str==[NSNull null])
  142. return nil;
  143. NSError *error = nil;
  144. id string2dic = [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding:NSUTF8StringEncoding]
  145. options: NSJSONReadingMutableContainers
  146. error: &error];
  147. // DebugLog(@"%@",string2dic);
  148. return string2dic;
  149. }
  150. +(NSString*) dict2string:(id) dict
  151. {
  152. if(dict==nil)
  153. return nil;
  154. NSError * err1;
  155. // 将NSDictionary转化为NSData
  156. NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&err1];
  157. // 再将NSData转为字符串
  158. NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  159. // NSAssert(jsonStr!=nil, @"convert failed");
  160. return jsonStr;
  161. }
  162. +(NSArray*) string2arr:(NSString*) string separator:(NSString*)separator
  163. {
  164. if(string.length==0)
  165. return [NSArray new];
  166. if(separator.length==0)
  167. return @[string];
  168. // if(separator.length==0)
  169. NSArray *stringArray = [string componentsSeparatedByString:separator];
  170. return stringArray;
  171. }
  172. @end