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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Z1591090/article/details/81180115

我们知道有时候后抬给我们的类型,我们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.字典自定义安全接口返回字典或者数组

扫描二维码关注公众号,回复: 3236775 查看本文章

/**
 *  获取服务器返回数据,指定类型返回,如果不符合类型,那么返回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]];

    

猜你喜欢

转载自blog.csdn.net/Z1591090/article/details/81180115