You need to enable JavaScript to run this app. Swift如何检查数组指定索引是否存在 避免下标访问越界崩溃
优惠活动
大模型
产品
解决方案
定价
更多

Swift如何检查数组指定索引是否存在 避免下标访问越界崩溃

你编写的判断代码会报错有两个核心原因:

  1. Swift 中 if 条件只能接收布尔类型的返回值,你直接通过下标取数组元素得到的是 String 类型的值,无法自动转为布尔值,所以触发类型不匹配报错。
  2. 即使调整了类型逻辑,直接通过下标访问不存在的索引会直接触发越界崩溃,根本不会进入判断分支。

正确实现方案

方案1:直接判断索引范围(最适合当前场景)

Swift 数组的合法索引范围是 0..<数组.count,只要判断下一个索引小于数组长度即可:

if imageNum + 1 < items.images.count {
    imageNum += 1
}

这种写法性能最优,不需要额外封装,完全满足你递增索引的判断需求。

方案2:通用安全下标扩展(适合频繁做索引安全判断的场景)

如果项目里经常需要判断数组索引是否存在,可以给集合类型加一个安全下标的扩展,越界时返回nil不会崩溃:

extension Collection {
    subscript(safe index: Index) -> Element? {
        indices.contains(index) ? self[index] : nil
    }
}

使用时通过可选绑定判断即可:

if let _ = items.images[safe: imageNum + 1] {
    imageNum += 1
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:36:02