Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <Foundation/Foundation.h>
- @interface NSDictionary (DictionaryWithData)
- + (id)dictionaryWithData:(NSData *)data;
- - (id)initWithData:(NSData *)data;
- @end
- #import "NSDictionary+DictionaryWithData.h"
- @implementation NSDictionary (DictionaryWithData)
- +(NSPropertyListMutabilityOptions) mutabilityOption {
- return NSPropertyListImmutable;
- }
- + (id)dictionaryWithData:(NSData *)data
- {
- static BOOL methodChecked = NO;
- static BOOL use_propertyListWithData = NO;
- if (!methodChecked) {
- SEL sel = @selector(propertyListWithData:options:format:error:);
- use_propertyListWithData = [[NSPropertyListSerialization class]
- respondsToSelector:sel];
- methodChecked = YES;
- }
- id result;
- if (use_propertyListWithData) {
- result = [NSPropertyListSerialization propertyListWithData:data
- options:[self mutabilityOption]
- format:nil
- error:nil];
- } else {
- result = [NSPropertyListSerialization propertyListFromData:data
- mutabilityOption:[self mutabilityOption]
- format:NULL
- errorDescription:nil];
- }
- return [result isKindOfClass:[NSDictionary class]] ? result : nil;
- }
- - (id)initWithData:(NSData *)data
- {
- id result = [[self class] dictionaryWithData:data];
- self = result ? [self initWithDictionary:result ] : nil;
- return self;
- }
- @end
- @implementation NSMutableDictionary (DictionaryWithData)
- +(NSPropertyListMutabilityOptions) mutabilityOption {
- return NSPropertyListMutableContainersAndLeaves;
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment