2016-11-22 64 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是價值。 –