NIMExtensionHelper.m 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // NIMExtensionHelper.m
  3. // NIMKit
  4. //
  5. // Created by amao on 4/25/16.
  6. // Copyright © 2016 NetEase. All rights reserved.
  7. //
  8. #import "NIMExtensionHelper.h"
  9. #import <objc/runtime.h>
  10. @implementation NSString (NIMKitExtension)
  11. static char NIMKitStringJsonDictionaryAddress;
  12. - (NSDictionary *)nimkit_jsonDict
  13. {
  14. NSDictionary *dict = [objc_getAssociatedObject(self, &NIMKitStringJsonDictionaryAddress) copy];
  15. if (dict == nil) //解析过一次后就缓存解析结果,避免多次解析
  16. {
  17. NSData *data = [self dataUsingEncoding:NSUTF8StringEncoding];
  18. dict = [NSJSONSerialization JSONObjectWithData:data
  19. options:0
  20. error:nil];
  21. if (![dict isKindOfClass:[NSDictionary class]])
  22. {
  23. dict = [NSDictionary dictionary];
  24. }
  25. objc_setAssociatedObject(self,&NIMKitStringJsonDictionaryAddress,dict,OBJC_ASSOCIATION_COPY);
  26. }
  27. return dict;
  28. }
  29. @end
  30. @implementation NSDictionary (NIMKitExtension)
  31. - (NSString *)nimkit_jsonString
  32. {
  33. NSData *data = [NSJSONSerialization dataWithJSONObject:self
  34. options:0
  35. error:nil];
  36. return data ? [[NSString alloc] initWithData:data
  37. encoding:NSUTF8StringEncoding] : nil;
  38. }
  39. @end