2016-11-22 67 views
0

在夫特,我定义我的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]没有错误。

有人知道我为什么会得到这个错误吗?

+1

您正在使用原始硬编码索引来尝试访问阵列的元素。你期望会发生什么? – Alexander

+0

你可以首先检查data [section] [row]是否存在(检查它是否等于nil),并且只有它是** not ** nil为它赋值 – Eric

回答

1

我看到了问题,由于某种原因,我想迅速将自动插入一个分节和行,当我通过下标访问它们,但似乎并非如此,所以我改变了我的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是价值。 –