比较两个nil的字符串时出现问题 - 目标C.

时间:2016-12-20 19:36:39

标签: objective-c null nsstring

我正在比较两个字符串。

问题是当我的两个字符串都是nil时。我不知道两个字符串何时出现nil,那么为什么控制进入success块。

我正在使用此代码来比较字符串:

  if(![oldString isEqualToString:newString]) 
        {
            //in case both are nil control reaches here
            needToShowPopup = YES;
            break;
        }

编辑:我想如果只有两个字符串不同,那么只有我的控件才能进入if statement。两者都是nil

时,我的情况就失败了

4 个答案:

答案 0 :(得分:6)

如果您希望仅在两个字符串都不是if时才评估nil条件,那么您可以这样做:

if (oldString && newString && ![oldString isEqualToString:newString]) {
    // both strings are set but they are not the same
}

如果ifoldString,则nil语句将输入newString语句,无论{{1}}的值是多少。

答案 1 :(得分:2)

你说你想要等同于[nil isEqualToString:nil]返回true。如果是这种情况,您可以写if

if(oldString ? ![oldString isEqualToString:newString] : newString)

或者,如果您不希望if执行nil,如果其中一个或两个值均为if,则可以写入if(oldString && newString && ![oldString isEqualToString:newString])

{{1}}

HTH

答案 2 :(得分:-1)

这是我的方法

oldString == newString

第一个检查nil比较指针。两个指针都是相同的内存地址,因此根据定义它们必须相等,或者两个指针都是[oldString isEqualToString:newString],因此也等于

如果失败,则调用{{1}},它比较字符串内容。如果任何一方为零,则将返回false,这是我们想要的,但是如果双方均为零,则它将在上一次检查中捕获到它,而我们不会到达这里:-)

答案 3 :(得分:-2)

If (oldstring!=null)
{
Your code...
}