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;

}

 

转载于:https://www.cnblogs.com/shuaiqu/p/5579933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值