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返回什麼數據,我們都不需要每一個都做格式化,也不會崩潰,我們只需要判斷字符串是不是空,數據是不是空,是不是很簡單呢?