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