當(dāng)我們?cè)陂_發(fā)中蔓肯,我們獲取的數(shù)據(jù)我們?cè)诓慌袛嗍欠駷榭盏臅r(shí)候就直接去賦值或者通過(guò)下標(biāo)去強(qiáng)行獲取就會(huì)出現(xiàn)程序中最容易出現(xiàn)的閃退問(wèn)題遂鹊,這樣的例子最常見的就是:字符串、數(shù)組和字典了
所以為了防止程序出現(xiàn)閃退蔗包,我們必須要判斷一下他是否為空值秉扑,那我們?nèi)绾稳ヅ袛嗄兀?/p>
有的人可能直接使用字符串穿的長(zhǎng)度是否 == 0 來(lái)判斷,但是這樣做太過(guò)片面了调限,如果這個(gè)不是個(gè)字符串的話怎么會(huì)有長(zhǎng)度呢舟陆,所以這種判斷是不對(duì)的
下面是我自己總結(jié)的一個(gè)更好一點(diǎn)判斷字符串為空的方法,判斷還是不完善的話請(qǐng)?jiān)谠u(píng)論區(qū)補(bǔ)充
/**
判斷字符串是否為空
@paramaStr 字符串
@returnYES? 空 NO
*/
+ (BOOL)isBlankString:(NSString*)aStr {
if( !aStr ) {
returnYES;
? ? }
if([aStrisKindOfClass:[NSNullclass]]) {
returnYES;
? ? }
if(!aStr.length) {
returnYES;
? ? }
if(aStr ==nil) {
returnYES;
? ? }
if(aStr ==NULL) {
? ? }
if([aStrisEqualToString:@"NULL"]) {
returnYES;
? ? }
? ? NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
? ? NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];
if(!trimmedStr.length) {
returnYES;
? ? }
? ? return NO;
}
下面再來(lái)說(shuō)一下耻矮,數(shù)組和字典吧秦躯,估計(jì)和上面一樣,好多人只判斷了裆装,數(shù)組和字典的長(zhǎng)度踱承,也是不夠完善的廢話不說(shuō)上代碼
/**
判斷數(shù)組為空
@paramarr 數(shù)組
@returnYES 空 NO
*/
+ (BOOL)isBlankArr:(NSArray*)arr {
? ? if(!arr) {
? ? ? ? returnYES;
? ? }
? ? if([arrisKindOfClass:[NSNullclass]]) {
? ? ? ? returnYES;
? ? }
? ? if(!arr.count) {
? ? ? ? returnYES;
? ? }
? ? if(arr ==nil) {
? ? ? ? returnYES;
? ? }
? ? if(arr ==NULL) {
? ? ? ? returnYES;
? ? }
? ? if(![arrisKindOfClass:[NSArrayclass]]) {
? ? ? ? returnYES;
? ? }
? ? return NO;
}
/**
判斷字典為空
@param? dic 數(shù)組
@returnYES 空 NO
*/
+ (BOOL)isBlankDictionary:(NSDictionary*)dic {
? ? if(!dic) {
? ? ? ? returnYES;
? ? }
? ? if([dicisKindOfClass:[NSNullclass]]) {
? ? ? ? returnYES;
? ? }
? ? if(!dic.count) {
? ? ? ? returnYES;
? ? }
? ? if(dic ==nil) {
? ? ? ? returnYES;
? ? }
? ? if(dic ==NULL) {
? ? ? ? returnYES;
? ? }
? ? if(![dicisKindOfClass:[NSDictionaryclass]]) {
? ? ? ? returnYES;
? ? }
? ? return NO;
}