我正在比较两个字符串。
问题是当我的两个字符串都是nil
时。我不知道两个字符串何时出现nil
,那么为什么控制进入success
块。
我正在使用此代码来比较字符串:
if(![oldString isEqualToString:newString])
{
//in case both are nil control reaches here
needToShowPopup = YES;
break;
}
编辑:我想如果只有两个字符串不同,那么只有我的控件才能进入if statement
。两者都是nil
答案 0 :(得分:6)
如果您希望仅在两个字符串都不是if
时才评估nil
条件,那么您可以这样做:
if (oldString && newString && ![oldString isEqualToString:newString]) {
// both strings are set but they are not the same
}
如果if
为oldString
,则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...
}