Swift 中正确判断字符串是否为空的方法
· 阅读需 3 分钟
这段代码看起来似乎没有什么问题,对吧?
然而,实际上它隐藏了一个相当严重的问题!
现在我们来理解一下这个问题是什么。
这段代码的目的非常明确:我们正在检查myString
是否为空。
事实证明,Swift 还提供了一个内置属性来实现这个目的,叫做isEmpty
。
而这种第二种方法要好得多!
那么这两种方法有什么区别呢?
当我们调用isEmpty
时,在底层 Swift 只需要检查字符串是否至少包含一个字符:这是非常快速的执行过程。
而且更好的是,这个执行时间不取决于字符串的长度。
另一方面,属性count
的工作方式非常不同。
count
将返回字符串中可见字符的数量。
由于一些 Unicode 字符可以组合成一个单独的可见字符,这意味着 count 必须遍历字符串中的所有字符。
因此,如果字符串很长,或者有很多字符串,这段代码将需要很长时间来执行。
这就是这段代码背后的大问题!
所以记住,每当你需要测试一个字符串是否为空时,绝对不要手动测试它的 count 是否大于零,因为这样做会很慢!
这篇文章就到这里,希望你喜欢这种新的格式!
如果你想要尝试这段代码,这里是它的样例:
if myString.count > 0 {
// `myString`不为空
}
if myString.isEmpty == false {
// `myString`不为空
}