1. 程式人生 > >iOS 判讀字串、陣列、字典是否為空

iOS 判讀字串、陣列、字典是否為空

當我們在開發中,我們獲取的資料我們在不判斷是否為空的時候就直接去賦值或者通過下標去強行獲取就會出現程式中最容易出現的閃退問題,這樣的例子最常見的就是:字串、陣列和字典了

所以為了防止程式出現閃退,我們必須要判斷一下他是否為空值,那我們如何去判斷呢?

有的人可能直接使用字串穿的長度是否 == 0 來判斷,但是這樣做太過片面了,如果這個不是個字串的話怎麼會有長度呢,所以這種判斷是不對的

下面是我自己總結的一個更好一點判斷字串為空的方法,判斷還是不完善的話請在評論區補充,為了方便使用,我寫成了+方法(類方法)

/**

 判斷字串是否為空

 @param  aStr 字串

 @return

YES  空 NO

 */

+ (BOOL)isBlankString:(NSString *)aStr {

    if ( !aStr ) {

        return YES;

    }

    if ([aStr isKindOfClass:[NSNull class]]) {

        return YES;

    }

    if (!aStr.length) {

        return YES;

    }

    if (aStr == nil) {

        return YES;

    }

    if (aStr == NULL

) {

          return YES;

    }

    if ([aStr isEqualToString:@"NULL"]) {

        return YES;

    }

NSCharacterSet *set = [NSCharacterSetwhitespaceAndNewlineCharacterSet];

NSString *trimmedStr = [aStr stringByTrimmingCharactersInSet:set];

    if (!trimmedStr.length) {

        return YES;

    }

returnNO;

}

下面是陣列和字典的

/**

 判斷陣列為空

 @param arr 陣列

 @return YES 空 NO

 */

+ (BOOL)isBlankArr:(NSArray *)arr {

    if (!arr) {

        return YES;

    }

    if ([arr isKindOfClass:[NSNull class]]) {

        return YES;

    }

  if (![arr isKindOfClass:[NSArray class]]) {

        return YES;

    }

    if (!arr.count) {

        return YES;

    }

    if (arr == nil) {

        return YES;

    }

    if (arr == NULL) {

        return YES;

    } 

returnNO;

}

/**

 判斷字典為空

 @param  dic 陣列

 @return YES 空 NO

 */

+ (BOOL)isBlankDictionary:(NSDictionary *)dic {

    if (!dic) {

        return YES;

    }

    if ([dic isKindOfClass:[NSNull class]]) {

        return YES;

    }

   if (![dic isKindOfClass:[NSDictionary class]]) {

        return YES;

    }

    if (!dic.count) {

        return YES;

    }

    if (dic == nil) {

        return YES;

    }

    if (dic == NULL) {

        return YES;

    }   

returnNO;

}

這些就是我總結的判斷字串、字典、陣列的判斷方法,如果條件不足,請各位及時在評論區補充