You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 5中检查字符串非Nil且非空的最优实现及性能疑问

Swift 5 中高效检查字符串非空且非Nil的最优实现

问题1:if _ = item.website, !item.website.isEmpty的性能影响与更优实现

用_ = item.website这种写法不会影响性能,它只是完成了可选值的非Nil判断,没有额外的计算或内存开销。不过这种写法不算最优,你可以优化成既解决警告又更规范的写法:

if let website = item.website, !website.isEmpty {
    showLinkButton()
}

这里直接用绑定后的website判断是否为空,既消除了“未使用变量”的警告,还避免了重复访问item.website属性——如果item.website是计算属性,这还能减少不必要的计算,性能反而更优。

另外,若需要多次做这类判断,更推荐给可选字符串扩展一个便捷属性,提升代码复用性:

extension Optional where Wrapped == String {
    var isNotEmpty: Bool {
        guard let str = self else { return false }
        return !str.isEmpty
    }
}

之后直接这样写即可,简洁又清晰:

if item.website.isNotEmpty {
    showLinkButton()
}

这种扩展实现的性能和直接写判断逻辑完全一致,无额外开销。

问题2:多次使用该写法的负面副作用

在同一个View中使用5次以上,不会产生性能层面的负面副作用。但如果重复写if _ = item.xxx, !item.xxx.isEmpty这类代码,会导致代码冗余,可读性和维护性变差——比如后续要修改判断逻辑,得逐一修改多处,容易出错。

如果用上述扩展属性的方式,不仅不会有副作用,还能让代码更整洁,后续修改逻辑仅需调整扩展里的实现即可。

内容的提问来源于stack exchange,提问作者theMap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:55:25