美文网首页iOS优秀开发文章
iOS - nil、Nil、NULL、NSNull介绍和开发中对

iOS - nil、Nil、NULL、NSNull介绍和开发中对

作者: ShIwEn9 | 来源:发表于2019-03-26 16:53 被阅读0次

    在开发中我们会经常遇到得数据为空的判断。
    比如我们在获取地址省市区信息的时候,有时会因为某些市没有区的情况导致返回空<null>,如果这样进行网络请求会出现app奔溃的情况,所以这时候我们就要进行数据判断之后在去发送请求。

    一、首先我们先对iOS开发中遇到的空值进行介绍:

    • nil :指向一个对象的空指针,nil是一个空对象,已经完全从内存中消失了

    • Nil :指向一个类的空指针(完全等同于nil 但是常用于类置空)

    • NULL :指向其他类型的空指针(比如:基本类型和c类型).

    • NSNull :通常表示集合中的类型(其实它也是一个对象,拥有有效的内存地址)[NSNull null]

    二、对JSON返回的<null>进行判断

    if([result isEqual:[NSNull null]]) {
        //result是从服务器返回的数据
        //在这里进行操作
    }
    

    三、对(null)的判断

    if(result == nil) {
       //在这里进行操作
    }
    

    四、基本数据类型的空值判断

    • 对于类似于NSString类型的数据进行空值判断
      1、string == nil;
      2、[string isEqualToString:@""];
    
    • 对于类似于NSNumber类型的数据进行空值判断
      1、number == nil;
      2、[number isEqualToNumber:@0];
    
    • 对于类似于NSArray类型的数据进行空值判断
      1、array == nil;
      2、array.count = 0;
    
    • 对于类似于NSDictionary类型的数据进行空值判断
      1、[dictionary isEqual:[NSNull null]];
      2、dictionary.count = 0;
    
    • 对于对象类型的数据进行空值判断
    if(!class) return;
    

    抽取方法:

      - (NSString *) changeForNull:(NSString *)change{
        
        NSString *temp = [NSString stringWithFormat:@"%@", change];
        
        if ([temp isEqualToString:@"<null>"] || [temp isEqualToString:@"(null)"] || [temp isEqualToString:@""]) {
            temp = @"";
        }
        
        return temp;
        
    }
    

    宏定义:

    /// 是否为空对象
    #define kObjectIsNil(__object) ((nil == __object) || [__object isKindOfClass:NSNull.class])
    #define kObjectIsNotNil(__object) (!kObjectIsNil(__object))
    /// 字符串为空
    #define kStringIsEmpty(__string) (kObjectIsNil(__string) || (__string.length == 0))
    /// 字符串不为空
    #define kStringIsNotEmpty(__string) (!kStringIsEmpty(__string))
    

    相关文章

      网友评论

        本文标题:iOS - nil、Nil、NULL、NSNull介绍和开发中对

        本文链接:https://www.haomeiwen.com/subject/bdlnvqtx.html