我有一个字符串
NSString hi;
而且我不知道哪些值会被初始化为它。可以是零,可以是空字符串,可以是任何东西。
使用有什么好处
吗if (![hi length])
与
if (![hi isEqualToString:@""])
似乎这两种情况都为空字符串、nil 和任何其他类型的字符串返回相同的值。我猜长度更好,因为它更有效率。它只返回一个变量,其中 isEqualToString 必须进行比较。
他们不做同样的事情。
[hi length]
将为 nil 或空字符串返回 0,为任何其他字符串返回非零。
当hi
为空字符串时,[hi isEqualToString:@""]
将返回 1,当 hi
为 nil 或任何非空字符串时,将返回 0。
换句话说,两行代码给出相同结果的唯一hi
值是 nil
。
您可能想要选项 #1 的行为(将 nil 或空字符串视为"空白",将任何其他值视为"非空白"),以便使用此选项。
使用
吗?if (![hi length])
有什么好处
是的。它可以同时检查空字符串和nil
。你不能用isEqualToString:
做到这一点,因为如果字符串是nil
,那么发送给它的任何消息都将返回零,所以它看起来不等于空字符串,因此需要再次检查。
顺便说一句,为了清楚起见,您应该考虑使用 if (hi.length != 0)
.
我会执行以下操作
if (hi && ![hi isEqualToString:@""]) {
}
如果![hi isEqualToString:@""]
nil
,仅凭才能让你得到一个真实的hi
.