夫特阵列INIT:数据[第] [行]
问题描述:
在夫特,我定义我的VAR为:夫特阵列INIT:数据[第] [行]
var data : [[[String : Any]]] = [[[:]]]
然后初始化它:
for section in 0...1 {
for row in 0...19 {
let streamer = [
"name" : "abcdef"
]
data[section][row] = streamer
}
}
但我发现了fatal error: Index out of range.
索引data[0][1]
,但索引data[0][0]
没有错误。
有人知道我为什么会得到这个错误吗?
答
我看到了问题,由于某种原因,我想迅速将自动插入一个分节和行,当我通过下标访问它们,但似乎并非如此,所以我改变了我的init进程:
for sectionIndex in 0...1 {
var section : [[String : Any]] = [[:]]
for rowIndex in 0...19 {
let streamer = [
"name" : "abcdef"
]
section.insert(streamer, at: rowIndex)
}
data.insert(section, at: sectionIndex)
}
+1
*某些原因是*:Swift'Array '是值类型而不是引用类型。 – vadian
+0
@vadian谢谢,我完全忘了swift的Array是价值。 –
您正在使用原始硬编码索引来尝试访问阵列的元素。你期望会发生什么? – Alexander
你可以首先检查data [section] [row]是否存在(检查它是否等于nil),并且只有它是** not ** nil为它赋值 – Eric