iOS 自定义一些安全接口(比如字典取值或者说数组取值)

本文介绍iOS开发中如何通过自定义安全接口避免数组越界等问题,包括数组取值、字典获取字符串及字典或数组的方法。

我们知道有时候后抬给我们的类型,我们iOS语言可能很难识别所以导致崩溃或者说数组越界等等都会导致,我们一般在写项目的时候会自定义一些安全的接口。

1.数组取值的安全接口(使用扩展)

/**
 *  在数组中根据索引查找对象
 *
 *  @param index 索引
 *
 *  @return 查找的数据
 */

- (id)objectAtIndex_zmm:(NSUInteger)index
{
    if (self.count == 0) {
        return nil;
    }
    if (index >= self.count) {
        return nil;
    }
    
    return [self objectAtIndex:index];
}

使用  [array objectAtIndex_zmm:num]

2.字典自定义安全接口返回字符串

 

/**
 *  获取字符串,未找到则返回 @“”
 *
 *  @param key NSString
 */

- (NSString *)stringForKey_zmm:(NSString *)key
{
    NSString *value = [self objectForKey_zmm:key
                               withValueClass:[NSString class]];
    if ([NSString strNilOrEmpty_cmbc:value])
    {
        value = @"";
    }
    return value;
}

使用 NSMutableDictionary *newDict = [responseDic mutableCopy];

         NSString *responseString = [newDict stringForKey_zmm:@"response"];

 

3.字典自定义安全接口返回字典或者数组

 

/**
 *  获取服务器返回数据,指定类型返回,如果不符合类型,那么返回nil
 *
 *  @param key NSString
 *  @param valueClass value类类型
 *
 *  @return value
 */

- (id)objectForKey_zmm:(NSString *)key withValueClass:(Class)valueClass
{
    if (![key isKindOfClass:[NSString class]]) {
        return nil;
    }
    
    if (valueClass == NULL) {
        return nil;
    }
    
    id value = [self objectForKey:key];
    
    if (!value) {
        return nil;
    }
    
    if (valueClass == [NSArray class] && ![value isKindOfClass:[NSArray class]]) {
        return [NSArray arrayWithObjects:value, nil];
    }
    
    if (![value isKindOfClass:valueClass]) {
        return nil;
    }
    
    return value;

}

使用,例如返回数组

  NSDictionary *dict = [NSDictionary  dictionary];

 NSArray *themeList = [dict objectForKey_zmm:@"ThemeList" withValueClass:[NSArray class]];

返回字典

 NSDictionary *requestDict = [dict objectForKey_zmm:@"request" withValueClass:[NSDictionary class]];

    

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值