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

Dal*_*vik -1 null objective-c nsstring

我正在比较两个字符串.

问题是当我的两个字符串都是nil.我不知道两个字符串何时出现,nil然后为什么控制进入success阻止.

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

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

编辑:我想如果只有两个字符串不同,那么只有我的控件才能进入if statement.我的情况都失败了nil

rma*_*ddy 5

如果您希望if仅在两个字符串都没有时才评估条件,nil那么您可以执行以下操作:

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

if如果oldStringnil考虑值,您拥有的代码将输入语句newString.

  • 在这里澄清一下(从上面的评论中引入这一点,以便@RahulMishra 看到它):发送到 `nil` 的任何消息总是返回 `0` 或其等价物(`0.0`、`nil`、`NO` 等)。当你询问 `[oldString isEqualToString:...]` 时,第二个参数是什么并不重要;这将始终返回“NO”。这会导致违反直觉的事情,例如`[nil isEqual:nil] == NO`。 (2认同)