IOS 处理空字符串

一、区别: 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



作者:清风_____
链接:https://www.jianshu.com/p/88e62100ab10
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值