RAConvertor.m 6.1 KB

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