mingsai

NSDictionary+DictionaryWithData.

Sep 9th, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #import <Foundation/Foundation.h>
  2.  
  3. @interface NSDictionary (DictionaryWithData)
  4. + (id)dictionaryWithData:(NSData *)data;
  5. - (id)initWithData:(NSData *)data;
  6. @end
  7.  
  8. #import "NSDictionary+DictionaryWithData.h"
  9.  
  10.  
  11.  
  12. @implementation NSDictionary (DictionaryWithData)
  13. +(NSPropertyListMutabilityOptions) mutabilityOption {
  14.     return NSPropertyListImmutable;
  15. }
  16.  
  17. + (id)dictionaryWithData:(NSData *)data
  18. {
  19.     static BOOL methodChecked = NO;
  20.     static BOOL use_propertyListWithData = NO;
  21.     if (!methodChecked) {
  22.         SEL sel = @selector(propertyListWithData:options:format:error:);
  23.         use_propertyListWithData = [[NSPropertyListSerialization class]
  24.                                     respondsToSelector:sel];
  25.         methodChecked = YES;
  26.     }
  27.  
  28.     id result;
  29.  
  30.     if (use_propertyListWithData) {
  31.  
  32.          result =  [NSPropertyListSerialization propertyListWithData:data
  33.                                                          options:[self mutabilityOption]
  34.                                                           format:nil
  35.                                                            error:nil];
  36.  
  37.     } else {
  38.  
  39.          result =  [NSPropertyListSerialization propertyListFromData:data
  40.                                                 mutabilityOption:[self mutabilityOption]
  41.                                                           format:NULL
  42.                                                 errorDescription:nil];
  43.     }
  44.  
  45.     return  [result isKindOfClass:[NSDictionary class]] ? result : nil;
  46. }
  47.  
  48. - (id)initWithData:(NSData *)data
  49. {
  50.     id result = [[self class] dictionaryWithData:data];
  51.     self = result ? [self initWithDictionary:result ] : nil;
  52.     return  self;
  53. }
  54. @end
  55.  
  56. @implementation NSMutableDictionary (DictionaryWithData)
  57. +(NSPropertyListMutabilityOptions) mutabilityOption {
  58.     return NSPropertyListMutableContainersAndLeaves;
  59. }
  60. @end
Advertisement
Add Comment
Please, Sign In to add comment