ios网络请求对一些空值的判断处理

  我们在做项目一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃。这个是因为我们获取的返回数据里面有空值。为了处理这个问题,封装一个字典的Category,我们可以在模型赋值处理时用这个Category过滤判断空值。

.h文件的方法说明

#import <Foundation/Foundation.h>

 

@interface NSDictionary (ValueNoNull)

 

/**

 获取String类型value,如果value为空返回@""

 */

-(nonnull NSString*)getStringValueForKey:(nonnull id)key;

 

/**

 获取Integer类型value,如果value为空返回0

 */

-(NSInteger)getIntegerValueForKey:(nonnull id)key;

 

/**

 获取double类型value,如果value为空返回0.0

 */

-(double)getDoubleValueForKey:(nonnull id)key;

 

/**

 获取float类型value,如果value为空返回0.0

 */

-(float)getFloatValueForKey:(nonnull id)key;

 

/**

 获取array类型value,如果value为空返回@[]

 */

-(nonnull NSArray*)getArrayValueForKey:(nonnull id)key;

 

/**

 获取dictionary类型value,如果value为空返回@{}

 */

-(nonnull NSDictionary*)getDictionaryValueForKey:(nonnull id)key;

-(nonnull NSNumber*)getNumberValueForKey:(nonnull id)key;

.m文件的方法实现

-(NSString *)getStringValueForKey:(id)key

{

    NSString *str;

    id value = [self objectForKey:key];

    if(value == nil || [value isEqual:[NSNull null]])

    {

        str = @"";

    }

    if([value isKindOfClass:[NSString class]])

    {

        str = value;

    }

    else

    {

        str = @"";

    }

    return str;

}

 

-(NSInteger)getIntegerValueForKey:(id)key

{

    NSInteger v = 0;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSNumber class]])

    {

        v = [value integerValue];

    }

    return v;

}

 

-(double)getDoubleValueForKey:(id)key

{

    double v = 0.0;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSNumber class]])

    {

        v = [value doubleValue];

    }

    return v;

}

 

-(float)getFloatValueForKey:(id)key

{

    float v = 0.0f;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSNumber class]])

    {

        v = [value floatValue];

    }

    return v;

}

 

-(NSArray *)getArrayValueForKey:(id)key

{

    NSArray *array;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSArray class]])

    {

        array = value;

    }

    else

    {

        array = @[];

    }

    return array;

}

 

-(NSDictionary *)getDictionaryValueForKey:(id)key

{

    NSDictionary *dict;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSDictionary class]])

    {

        dict = value;

    }

    else

    {

        value = @{};

    }

    return dict;

}

 

-(NSNumber*)getNumberValueForKey:(id)key

{

    NSNumber *number;

    id value = [self objectForKey:key];

    if(value != nil && ![value isEqual:[NSNull null]] && [value isKindOfClass:[NSNumber class]])

    {

        number = value;

    }

    else

    {

        number = @0;

    }

    return number;

}

 

posted on 2016-06-13 11:04  花开、花落  阅读(1522)  评论(0编辑  收藏  举报