我正在使用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”
肯定有一些琐碎的事情我忽略了,但我不知道是什么
答案 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)