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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-16 20:54   11   0

我们知道有时候后抬给我们的类型,我们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]];

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP