Swift:索引超出二维数组的范围

时间:2018-10-12 08:19:06

标签: arrays swift

我正在使用String的二维数组。初始化时,将其填充为默认值String。当我想从中访问元素时,出现超出范围的错误

class MyClass: UIViewController, {

var bodies = [[String]]()

override func viewDidLoad() {
    super.viewDidLoad()

    setBodies()

    if isBodiesEmpty() {
        //setRefreshButton()
    }
}

private func setBodies() {
    var bodies = Array(repeating: Array(repeating: "default", count: 6), count: 4)

...

    bodies[2][0] = "string 2 0"
    bodies[2][1] = "string 2 1"

...

}

private func isBodiesEmpty() -> Bool {
    if bodies[2][0].isEmpty {
        return true
    }
    if bodies[2][0].contains("default"){ 
        return true
    }
    return false
}
}

两者

if bodies[2][0].isEmpty 

if bodies[2][0].contains("default")

抛出“线程1:致命错误:索引超出范围”

但是,如果我打印数组的一个元素,它将起作用:

print("bodies[2][0] =="+bodies[2][0])

显示:“字符串2 0”

肯定有一些琐碎的事情我忽略了,但我不知道是什么

1 个答案:

答案 0 :(得分:7)

是的,这是件小事,是一个非常常见的错误。这行

var bodies = Array(repeating: Array(repeating: "default", count: 6), count: 4)

创建一个本地数组bodies,它不是属性 bodies。只需删除var

bodies = Array(repeating: Array(repeating: "default", count: 6), count: 4)