RAConvertor.m 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  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. +(NSDictionary*) 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. NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
  90. return data;
  91. }
  92. +(NSArray*) data2arr:(NSData*) data
  93. {
  94. if(data == nil)
  95. return nil;
  96. NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
  97. return array;
  98. }
  99. +(NSString*) separateNumber:(double) num
  100. {
  101. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  102. [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
  103. NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
  104. // [formatter setCurrencySymbol:@"$"];
  105. [formatter setGroupingSeparator:groupingSeparator];
  106. [formatter setGroupingSize:3];
  107. [formatter setAlwaysShowsDecimalSeparator:NO];
  108. [formatter setUsesGroupingSeparator:YES];
  109. NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:num]];
  110. return formattedString;
  111. }
  112. +(NSString*) currencyNumber:(double) num
  113. {
  114. // [self separateNumber:1234.56];
  115. NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
  116. [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
  117. NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
  118. [formatter setCurrencySymbol:@"$"];
  119. [formatter setGroupingSeparator:groupingSeparator];
  120. [formatter setGroupingSize:3];
  121. [formatter setAlwaysShowsDecimalSeparator:NO];
  122. [formatter setUsesGroupingSeparator:YES];
  123. NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:num]];
  124. return formattedString;
  125. }
  126. +(NSData*) dict2data:(NSDictionary*) dict
  127. {
  128. if(dict==nil)
  129. return nil;
  130. // 将NSDictionary转化为NSData
  131. NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil];
  132. return data;
  133. }
  134. +(NSDictionary*) string2dict:(NSString*) str
  135. {
  136. if(str==nil||(NSNull *)str==[NSNull null])
  137. return nil;
  138. NSError *error = nil;
  139. NSDictionary *string2dic = [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding:NSUTF8StringEncoding]
  140. options: NSJSONReadingMutableContainers
  141. error: &error];
  142. // DebugLog(@"%@",string2dic);
  143. return string2dic;
  144. }
  145. +(NSString*) dict2string:(id) dict
  146. {
  147. if(dict==nil)
  148. return nil;
  149. NSError * err1;
  150. // 将NSDictionary转化为NSData
  151. NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&err1];
  152. // 再将NSData转为字符串
  153. NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  154. NSAssert(jsonStr!=nil, @"convert failed");
  155. return jsonStr;
  156. }
  157. +(NSArray*) string2arr:(NSString*) string separator:(NSString*)separator
  158. {
  159. if(string.length==0)
  160. return [NSArray new];
  161. if(separator.length==0)
  162. return @[string];
  163. // if(separator.length==0)
  164. NSArray *stringArray = [string componentsSeparatedByString:separator];
  165. return stringArray;
  166. }
  167. @end