objC 检查空字符串,isEqualToString:@ " " vs 长度



我有一个字符串

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.

相关内容

  • 没有找到相关文章

最新更新