对从后台取得数据进行安全处理
.h文件
@interface NSArray (SafeAccess)
-(id)objectWithIndex:(NSUInteger)index;
- (NSString*)stringWithIndex:(NSUInteger)index;
- (NSNumber*)numberWithIndex:(NSUInteger)index;
- (NSArray*)arrayWithIndex:(NSUInteger)index;
- (NSDictionary*)dictionaryWithIndex:(NSUInteger)index;
- (NSInteger)integerWithIndex:(NSUInteger)index;
- (BOOL)boolWithIndex:(NSUInteger)index;
- (float)floatWithIndex:(NSUInteger)index;
//CG
- (CGFloat)CGFloatWithIndex:(NSUInteger)index;
- (CGPoint)pointWithIndex:(NSUInteger)index;
- (CGSize)sizeWithIndex:(NSUInteger)index;
- (CGRect)rectWithIndex:(NSUInteger)index;
@end
#pragma --mark NSMutableArray setter
@interface NSMutableArray(SafeAccess)
-(void)addObj:(id)i;
-(void)addString:(NSString*)i;
-(void)addInteger:(NSInteger)i;
-(void)addCGFloat:(CGFloat)f;
-(void)addFloat:(float)i;
-(void)addPoint:(CGPoint)o;
-(void)addSize:(CGSize)o;
-(void)addRect:(CGRect)o;
@end
.m文件
@implementation NSArray (SafeAccess)
-(id)objectWithIndex:(NSUInteger)index{
if (index <self.count) {
return self[index];
}else{
return nil;
}
}
- (NSString*)stringWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if (value == nil || value == [NSNull null])
{
return @"";
}
if ([value isKindOfClass:[NSString class]]) {
return (NSString*)value;
}
if ([value isKindOfClass:[NSNumber class]]) {
return [value stringValue];
}
return nil;
}
- (NSNumber*)numberWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if ([value isKindOfClass:[NSNumber class]]) {
return (NSNumber*)value;
}
if ([value isKindOfClass:[NSString class]]) {
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
return [f numberFromString:(NSString*)value];
}
return nil;
}
- (NSArray*)arrayWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if (value == nil || value == [NSNull null])
{
return nil;
}
if ([value isKindOfClass:[NSArray class]])
{
return value;
}
return nil;
}
- (NSDictionary*)dictionaryWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if (value == nil || value == [NSNull null])
{
return nil;
}
if ([value isKindOfClass:[NSDictionary class]])
{
return value;
}
return nil;
}
- (NSInteger)integerWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if (value == nil || value == [NSNull null])
{
return 0;
}
if ([value isKindOfClass:[NSString class]] || [value isKindOfClass:[NSNumber class]])
{
return [value integerValue];
}
return 0;
}
- (float)floatWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
if (value == nil || value == [NSNull null])
{
return 0;
}
if ([value isKindOfClass:[NSNumber class]] || [value isKindOfClass:[NSString class]])
{
return [value floatValue];
}
return 0;
}
- (CGFloat)CGFloatWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
CGFloat f = [value doubleValue];
return f;
}
- (CGPoint)pointWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
CGPoint point = CGPointFromString(value);
return point;
}
- (CGSize)sizeWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
CGSize size = CGSizeFromString(value);
return size;
}
- (CGRect)rectWithIndex:(NSUInteger)index
{
id value = [self objectWithIndex:index];
CGRect rect = CGRectFromString(value);
return rect;
}
@end
#pragma --mark NSMutableArray setter
@implementation NSMutableArray (SafeAccess)
-(void)addObj:(id)i{
if (i!=nil) {
[self addObject:i];
}
}
-(void)addString:(NSString*)i
{
if (i!=nil) {
[self addObject:i];
}
}
-(void)addBool:(BOOL)i
{
[self addObject:@(i)];
}
-(void)addInt:(int)i
{
[self addObject:@(i)];
}
-(void)addInteger:(NSInteger)i
{
[self addObject:@(i)];
}
-(void)addCGFloat:(CGFloat)f
{
[self addObject:@(f)];
}
-(void)addFloat:(float)i
{
[self addObject:@(i)];
}
-(void)addPoint:(CGPoint)o
{
[self addObject:NSStringFromCGPoint(o)];
}
-(void)addSize:(CGSize)o
{
[self addObject:NSStringFromCGSize(o)];
}
-(void)addRect:(CGRect)o
{
[self addObject:NSStringFromCGRect(o)];
}
@end