美文网首页iOS 开发
IOS 处理空字符串

IOS 处理空字符串

作者: 清风_____ | 来源:发表于2020-05-08 17:00 被阅读0次

    一、区别: nil、Nil、NULL和[NSNull null]的区别

    1.nil

    当一个对象置为nil时,这个对象的内存地址就会被系统收回。置空之后是不能进行retain,copy等跟引用计数有关的任何操作的。

    2.Nil

    nil完全等同于Nil,只不过由于编程习惯,人们一般把对象置空用nil,把类置空用Nil。

    3.NULL

    这个是从C语言继承来的,就是一个简单的空指针

    4.[NSNull null]

    这个才是重点:[NSNull null]和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到[NSNull null],它就是为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。

    1.判断方法

    -(BOOL)isNull:(id)object
    {
        // 判断是否为空串
        if ([object isEqual:[NSNull null]]) {
            return NO;
        }
        else if ([object isKindOfClass:[NSNull class]])
        {
            return NO;
        }
        else if (object==nil){
            return NO;
        }
        return YES;
    }
    

    2.对空串处理

    -(NSString*)convertNull:(id)object{ 
    
        // 转换空串
    
        if ([object isEqual:[NSNull null]]) {
            return @" ";
        }
        else if ([object isKindOfClass:[NSNull class]])
        {
            return @" ";
        }
        else if (object==nil){
            return @"无";
        }
        return object;
        
    }
    

    3. json 返回NSNull处理

    - (id)mj_newValueFromOldValue:(id)oldValue property:(MJProperty *)property{
    
    if (oldValue == [NSNull null]) {
    
    if ([oldValue isKindOfClass:[NSArray class]]) {
    
    return  @[];
    
    }else if([oldValue isKindOfClass:[NSDictionary class]]){
    
    return @{};
    
    }else{
    
    return @"";
    
    }
    
    }
    
    return oldValue;
    
    }
    

    链接:https://www.jianshu.com/p/27274cea9cfc
    链接:https://blog.csdn.net/l2i2j2/java/article/details/51318933
    链接:https://my.oschina.net/joanfen/blog/134295

    相关文章

      网友评论

        本文标题:IOS 处理空字符串

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