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

非空Swift数组能否安全强制解包.last属性?

关于Swift数组.last属性强制解包的安全性问题

我有一个来自SwiftData的元素数组,需要获取它的最后一个元素,这个数组有可能为空。想问:如果数组不为空,能不能安全地假设(进而强制解包).last属性?示例代码如下:

if myArray.isEmpty {
  print("some error")
} else {
  print("\(myArray.last!) is definitely there")
}

结论与解释

完全可以安全地进行强制解包,原因如下:

  • Swift的Array是值类型,在当前线程下,一旦通过isEmpty确认数组非空,只要没有后续代码(或异步操作)修改这个数组的内容,数组的元素数量就不会改变,last属性必然返回有效的非空值。
  • 从Array的类型定义来看,last仅会在数组为空时返回nil。既然已经通过isEmpty排除了空数组的场景,此时last不可能是nil,强制解包不会引发运行时崩溃。

可选的更优雅写法

虽然上述代码的强制解包是安全的,但也可以使用Swift推荐的可选绑定写法,无需单独检查isEmpty,代码更简洁直观:

guard let lastElement = myArray.last else {
    print("some error")
    return
}
print("\(lastElement) is definitely there")

内容的提问来源于stack exchange,提问作者Cécile Lebleu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:42:06