SecureMappingKit 0.0.1b1

SecureMappingKit 0.0.1b1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Jérôme Morissard 维护。



  • 作者:
  • Morissard Jérome

securing your mapping between JSON and your object. What is security ? The library takes care of converting JSON objects to your desired types. If you expect a NSDate and the JSON gives you a NSString, SecureMappingKit transforms it into the expected class using NSValueTransformer.

Current transformers

  • [x] NSNumberTransformer,
  • [x] NSBooleanNumberTransformer, to ensure you have a NSNumber of a boolean
  • [x] NSStringTransformer,
  • [x] NSURLTransformer,
  • [x] NSArrayTransformer,
  • [x] NSDateTransformer,
  • [x] NSDecimalTransformer

+_+

  • [x] ThreadSafe,
  • [x] Memory usage, DateFormatters and ValueTransformers are allocated once and stored in the Thread dictionary.
  • [x] Secure mappings,
  • [x] many unit tests

Get SecureMappingKit (Soon)

If you use Cocoa Pods, you can get SecureMappingKit by adding to your podfile the following:

Using SecureMappingKit

On a NSDictionnary

- (id)objectForKey:(id)aKey expectedClass:(Class)expectedClass;
- (id)objectForKey:(id)aKey expectedClass:(Class)expectedClass withTransformerClass:(Class)transformerClass;
- (id)objectForKey:(id)aKey withTransformerBlock:(JMOTransformerBlock)transformerBlock;

- (NSNumber *)numberForKey:(id)aKey;
- (NSNumber *)boolNumberForKey:(id)aKey;
- (NSDecimalNumber *)decimalNumberForKey:(id)aKey;
- (NSString *)stringForKey:(id)aKey;
- (NSURL *)urlForKey:(id)aKey;
- (NSArray *)arrayForKey:(id)aKey;
- (NSDate *)dateForKey:(id)aKey usingDateFormat:(NSString *)dateFormat;

Configure optional values

[SecureMappingKit setDateFormatterForcedlocale:[NSLocale localeWithLocaleIdentifier:@"fr_FR"]];
[SecureMappingKit setDateFormatterForcedTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
[SecureMappingKit setLogEnable:YES];

On other classes ?

[NSNumber numberFromObject:obj];
[NSNumber boolNumberFromObject:@"true"];
[NSNumber boolNumberFromObject:@"1"];
[NSNumber boolNumberFromObject:@(1)];
[NSDecimalNumber decimalNumberFromObject:@"1,1"];
[NSString stringFromObject:@(1)];
[NSURL urlFromObject:@"https://developer.apple.com/design/"];
[NSDate dateFromObject:@"07/26/1982" usingDateFormat:@"MM/dd/yyyy"]

Using SecureMappingKit, implement the SecureDecoding protocol

- (void)decodeObjectWithDictionary:(NSDictionary *)dict
{
    NSString *identifier = [dict objectForKey:@"id" expectedClass:NSString.class];

    //NSNumber has boolean
    NSNumber *isActive = [dict objectForKey:@"isActive" 
                              expectedClass:NSNumber.class 
                       withTransformerClass:NSBooleanNumberTransformer.class];

    //NSNumber
    NSNumber balance = [dict objectForKey:@"balance" expectedClass:NSNumber.class];

    //@{@"url":@"https://developer.apple.com/design/"}
    NSURL *url = [dict  objectForKey:@"url" expectedClass:NSURL.class];

    NSDate *date = [dict  dateObjectForKey:@"date" withDateFormat:@"MM/dd/yyyy"];
}