arrays - Swift:二维数组中的索引超出范围
问题描述
我正在使用字符串的二维数组。当我初始化它时,我用默认值字符串填充它。当我想从中访问元素时,出现超出范围错误
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)
推荐阅读
- sql - 如何计算 SQL 文本中关键字的实例
- c# - ASP.NET NuGet 包依赖项不会更新
- xamarin.forms - 如何自定义按钮以具有渐变色背景?
- vbscript - VBScript“ALTt”或“{ENTER}”不选择按钮,它只是突出显示它
- preg-replace - laravel preg_replace 包含符号的字符串之前的粗体字符串
- java - 如何从地址拦截器更改一个订单的 OrderStatus?混合商务
- python - Python 3 未读取文件路径 - ModuleNotFoundError
- excel - 关闭工作簿 保存更改 不工作
- php - 无法在wordpress中重新声明函数
- php - 如何使用php正则表达式在字符串中查找带参数的url