我正在使用字符串的二维数组。当我初始化它时,我用默认值字符串填充它。当我想从中访问元素时,出现超出范围的错误
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">
一定有什么琐碎的事情我忽略了,但我不知道是什么
是的,这是一件微不足道的事情,也是一个非常常见的错误。此行
var bodies = Array(repeating: Array(repeating: "default", count: 6), count: 4)
创建一个本地数组bodies
该数组不是属性bodies
。只需删除var
bodies = Array(repeating: Array(repeating: "default", count: 6), count: 4)