对象在iOS中返回空描述

时间:2015-10-01 05:25:58

标签: ios nsstring

你好,我正在做这样的事情。

NSString * fblink=[dm.commonDataArray valueForKey:@"fb_link"];

if(![fblink isEqual:[NSNull null]]||![fblink isEqualToString:@""]||![fblink length]<=0)
{
    [fb_button setImage:[UIImage imageNamed:@"ico_user_fb"] forState:UIControlStateNormal];
    [fb_button addTarget:self
                  action:@selector(buttonFBTouch:)
        forControlEvents:UIControlEventTouchUpInside];
}else{
    [fb_button setImage:[UIImage imageNamed:@"ico_fb_red_gray"] forState:UIControlStateNormal];
}

当我在我的日志中输入fblink时,它会显示(lldb) po fblink <object returned empty description>但仍然是我的if条件变为真,并且继续进入其他部分。

我如何克服这个问题?如果返回空描述,我不想执行我的if条件true部分。我该如何检查这种情况?请帮我 感谢

4 个答案:

答案 0 :(得分:3)

问题出在你的if条件上。 fblinknil,您正在检查nil是否等于[NSNull null],因此这种情况会失败并且您将结果反转,以使其成为真,如果是这样的话,则会进入此内容。

如果我们扩展您的if案例,它将成为:

if(![nil isEqual:[NSNull null]]||![nil isEqualToString:@""]||![nil length]<=0)
{
}

哪个成为

if(!false||!false||!true) // which evaluates to true, you are using ||, so if any one condition is true, it will go inside of the if case
{
}

如果情况需要改变:

if([fblink isKindOfClass:[NSString class]] && ![fblink length]<=0)
{
}
else
{
}

答案 1 :(得分:1)

我认为fblink不是null,而是一个空字符串。因此,您的![fblink isEqual:[NSNull null]]正在变为现实,if statement正在执行。只能在以下条件下检查:

if(![fblink isEqualToString:@""]||![fblink length]=0)

答案 2 :(得分:1)

您必须更改|| (或)条件与&amp;&amp;(和)条件。

试试这个:

    if(![fblink isEqual:[NSNull null]]&&![fblink isEqualToString:@""]&&![fblink length]<=0 )
    {
        //your code
    }
    else
    {
       // your code
    }

答案 3 :(得分:1)

你可以尝试.....

 if(![fblink isEqual:[NSNull null]]&&![fblink isEqualToString:@""]&&![fblink length]<=0)
{
    //your code here .......
 }
 else
    {//your code here  ...}