NSMutableDictionary+safe.m 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // NSMutableDictionary+safe.m
  3. // categories
  4. //
  5. // Created by wentian on 17/6/1.
  6. //
  7. //
  8. #import "NSMutableDictionary+safe.h"
  9. @implementation NSMutableDictionary (safe)
  10. - (void)safe_setObject:(id)anObject forKey:(id<NSCopying>)aKey {
  11. if (aKey) {
  12. if (!anObject) {
  13. [self removeObjectForKey:aKey];
  14. }
  15. else {
  16. [self setObject:anObject forKey:aKey];
  17. }
  18. }
  19. }
  20. @end
  21. // - - -
  22. id yy_dicGetObject(NSDictionary * dic, id aKey, Class aClass) {
  23. id result = [dic objectForKey:aKey];
  24. if (result && [result isKindOfClass:aClass]) {
  25. return result;
  26. }
  27. return nil;
  28. }
  29. // - - -
  30. NSDictionary * yy_dicGetDic(NSDictionary *dic, id aKey) {
  31. return (NSDictionary *)yy_dicGetObject(dic, aKey, [NSDictionary class]);
  32. }
  33. NSArray * yy_dicGetArray(NSDictionary *dic, id aKey) {
  34. return (NSArray *)yy_dicGetObject(dic, aKey, [NSArray class]);
  35. }
  36. NSArray * yy_dicGetArraySafe(NSDictionary *dic, id aKey) {
  37. if ([dic objectForKey:aKey] && ![[dic objectForKey:aKey] isKindOfClass:[NSArray class]])
  38. {
  39. return [NSArray arrayWithObject:[dic objectForKey:aKey]];
  40. }
  41. return yy_dicGetArray(dic, aKey);
  42. }
  43. // - - -
  44. NSString * yy_dicGetString(NSDictionary *dic, id aKey) {
  45. if (dic == nil || ![dic isKindOfClass:[NSDictionary class]]) {
  46. return nil;
  47. }
  48. id result = [dic objectForKey:aKey];
  49. if (result && [result isKindOfClass:[NSNumber class]]) {
  50. return [NSString stringWithFormat:@"%@",result];
  51. } else if (result && [result isKindOfClass:[NSString class]]) {
  52. return (NSString *)result;
  53. }
  54. return nil;
  55. }
  56. NSString * yy_dicGetStringSafe(NSDictionary *dic, id aKey) {
  57. if (yy_dicGetString(dic, aKey) && yy_dicGetString(dic, aKey).length > 0) {
  58. return yy_dicGetString(dic, aKey);
  59. }
  60. return @"";
  61. }
  62. // - - -
  63. int yy_dicGetInt(NSDictionary *dic, id aKey, int nDefault) {
  64. if (dic) {
  65. id result = [dic objectForKey:aKey];
  66. if (result && [result isKindOfClass:[NSNumber class]]) {
  67. return [(NSNumber *)result intValue];
  68. }
  69. else if (result && [result isKindOfClass:[NSString class]]) {
  70. return [(NSString *)result intValue];
  71. }
  72. }
  73. return nDefault;
  74. }
  75. float yy_dicGetFloat(NSDictionary *dic, id aKey, float fDefault) {
  76. if (dic) {
  77. id result = [dic objectForKey:aKey];
  78. if (result && [result isKindOfClass:[NSNumber class]]) {
  79. return [(NSNumber *)result floatValue];
  80. }
  81. else if (result && [result isKindOfClass:[NSString class]]) {
  82. return [(NSString *)result floatValue];
  83. }
  84. }
  85. return fDefault;
  86. }
  87. BOOL yy_dicGetBool(NSDictionary *dic, id aKey, BOOL bDefault) {
  88. if (dic) {
  89. id result = [dic objectForKey:aKey];
  90. if (result && [result isKindOfClass:[NSNumber class]]) {
  91. return [(NSNumber *)result boolValue];
  92. }
  93. else if (result && [result isKindOfClass:[NSString class]]) {
  94. return [(NSString *)result boolValue];
  95. }
  96. }
  97. return bDefault;
  98. }