server给的数据多种多样导致客户端崩溃
因为server端给回的数据类型多种多样,可能本来是字符串,然后给到我们是NSNumber类型,这样我们如果没有进行强制的转换,调用到NSString的方法可能引起程序奔溃,所以我给NSDictionary写了类别,处理简单的常用的数据类型,具体代码如下:
NSDictionary建立类别,Format
1:在NSDictionary+Format.h中加入下列代码:
/**
* 获取string 如果为null或者不存在则返回空字符串
*
* @param key
*/
- (NSString*)stringWithKey:(NSString*)key;
/**
* 获取array 如果为null或者不存在则返回空数组
*
* @param key
*/
- (NSArray*)arrayWithKey:(NSString*)key;
/**
* 获取dic 如果为null或者不存在则返回空dic
*
* @param key
*/
- (NSDictionary*)dicWithKey:(NSString*)key;
2:在NSDictionary+Format.m中加入下列代码:
- (NSString*)stringWithKey:(NSString*)key {
id object = [self objectForKey:key];
if (object && ([object isKindOfClass:[NSString class]] || [object isKindOfClass:[NSNumber class]])) {
return [NSString stringWithFormat:@"%@", object];
} else {
return @"";
}
}
- (NSArray*)arrayWithKey:(NSString*)key {
id object = [self objectForKey:key];
if (object && [object isKindOfClass:[NSArray class]]) {
return object;
} else {
return [NSArray array];
}
}
- (NSDictionary*)dicWithKey:(NSString*)key {
id object = [self objectForKey:key];
if (object && [object isKindOfClass:[NSDictionary class]]) {
return object;
} else {
return [NSDictionary dictionary];
}
}
3:在网络请求回来的数据,全部用
[dic stringWithKey:@"xx"]
[dic arrayWithKey:@"xx"]
[dic dicWithKey:@"xx"]
来代替[dic objectForKey:@"xx"]
这样无论server返回什么数据,我们都不需要每一个都做格式化,也不会崩溃,我们只需要判断字符串是不是空,数据是不是空,是不是很简单呢?