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

Swift数组初始化遇Index out of range错误,求排查解决

Swift数组初始化报错:Index out of range问题分析与解决

问题代码

import UIKit
 
var list = [2, 4, 5, 1, 0]
func initArray(array : [Int], value : Int)->[Int] {
  var arrayX = array
  for i in arrayX
  {
    arrayX[i] = value
  }
  return arrayX
}
print(initArray(array: list, value: 2))

报错信息

Swift/ContiguousArrayBuffer.swift:613: Fatal error: Index out of range

问题原因

你在for循环里直接遍历arrayX的元素值,错误地把元素值当成数组索引使用。比如原数组arrayX初始值是[2,4,5,1,0],循环到第三个元素时,i的值是5,但数组的合法索引范围是0到4(数组长度为5),访问arrayX[5]就触发了索引越界错误。

解决方法

有两种常用的解决方式:

方式一:遍历数组合法索引

修改循环逻辑,遍历数组的索引范围而非元素值:

import UIKit
 
var list = [2, 4, 5, 1, 0]
func initArray(array : [Int], value : Int)->[Int] {
  var arrayX = array
  // 遍历数组的合法索引
  for i in arrayX.indices {
    arrayX[i] = value
  }
  return arrayX
}
print(initArray(array: list, value: 2))

方式二:使用Swift内置API直接生成目标数组

如果需求是将数组所有元素替换为指定值,无需手动循环,用Array(repeating:count:)可以更高效生成结果:

import UIKit
 
var list = [2, 4, 5, 1, 0]
func initArray(array : [Int], value : Int)->[Int] {
  // 直接创建长度与原数组一致、元素全为指定值的数组
  return Array(repeating: value, count: array.count)
}
print(initArray(array: list, value: 2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:32