在開(kāi)發(fā)的過(guò)程當(dāng)中猫胁,我們經(jīng)常會(huì)遇到后端返回的數(shù)據(jù)為空的情況箱亿。
1、之前我們的后端語(yǔ)言用的是python弃秆,后端的全部接口都是和前端同步的,所以數(shù)據(jù)為空基本上只需要判斷兩種情況髓帽。
NSDictionary *dict = [NSDictionary dictionary];
NSString *name = dict[@"name"];
if (name != nil && name != 0) {
// do something
}
這樣做數(shù)據(jù)為空的判斷是最簡(jiǎn)單的菠赚,但是這中情況只出現(xiàn)在與你對(duì)接的后端數(shù)據(jù)非常靠譜的情況下郑藏。
2衡查、后來(lái)?yè)Q了一家公司,后端的語(yǔ)言用的是PHP必盖,當(dāng)然我也認(rèn)為PHP是世界上最好的編程語(yǔ)言拌牲,沒(méi)有之一,但是我遇到了很多種數(shù)據(jù)為空的情況歌粥。下面我們來(lái)詳細(xì)的看一看各種“空數(shù)據(jù)”都怎么樣判定塌忽。
+ (BOOL)isBlankString:(NSString *)str
{
if (!str)
{
return YES;
}
if ([str isKindOfClass:[NSNull class]])
{
return YES;
}
if ([str isEqual:[NSNull null]])
{
return YES;
}
if ([str isEqual:@"null"])
{
return YES;
}
if (str == NULL)
{
return YES;
}
if ([[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] == 0)
{
return YES;
}
return NO;
}
在這里呢,小弟先給大家提供一個(gè)可以判定任何空數(shù)據(jù)的方法失驶,大家只需要?jiǎng)?chuàng)建一個(gè)分類即可土居。不知道各位看到這個(gè)方法的第一反應(yīng)是什么,有沒(méi)有同學(xué)會(huì)覺(jué)得嬉探,為什么要用類方法呢擦耀,用對(duì)象方法不就可以了,因?yàn)楸旧磉@個(gè)方法就是NSString的分類方法涩堤,何必要用類方法呢眷蜓,還要把字符串本身傳進(jìn)來(lái)。
有這個(gè)疑問(wèn)的同學(xué)胎围,那你的運(yùn)行時(shí)肯定是沒(méi)學(xué)好吁系,一個(gè)空的對(duì)象調(diào)用任何方法都不會(huì)響應(yīng)的德召。
上面我所判定的各種情況是我開(kāi)發(fā)過(guò)程當(dāng)中遇到過(guò)的(Swift中還有其他的空數(shù)據(jù)類型),這里我先只給出OC的工具垮抗,去年寫(xiě)了一年的Swift氏捞,很久沒(méi)有整理東西了,歡迎大家補(bǔ)充冒版。