我有此數組:迅速:改變數組的內容給我一個錯誤
var array = [[12,46,["a","b","c"],"nil",true,7,true],[10,40,["c","d","e"],"nil",true,7,true],[0,1,["z","l","w"],"hey",false,7,true]].
,當我試圖通過這個代碼更改數組布爾的最後一個布爾值:
array[0][6] = false
我得到這個錯誤「不能通過下標下標是隻能獲取數組」
我有此數組:迅速:改變數組的內容給我一個錯誤
var array = [[12,46,["a","b","c"],"nil",true,7,true],[10,40,["c","d","e"],"nil",true,7,true],[0,1,["z","l","w"],"hey",false,7,true]].
,當我試圖通過這個代碼更改數組布爾的最後一個布爾值:
array[0][6] = false
我得到這個錯誤「不能通過下標下標是隻能獲取數組」
有趣。我認爲編譯器絆倒了某個地方。你只需要檢查陣列的類型來理解爲什麼:
var array = [
[12,46,["a","b","c"],"nil",true,7,true],
[10,40,["c","d","e"],"nil",true,7,true],
[0,1,["z","l","w"],"hey",false,7,true]
]
print(array.dynamicType) // Array<NSArray>
// can't assign to the inner array since NSArray is immutable
給斯威夫特內型的暗示和它的作品
var array: [[AnyObject]] = [
[12,46,["a","b","c"],"nil",true,7,true],
[10,40,["c","d","e"],"nil",true,7,true],
[0,1,["z","l","w"],"hey",false,7,true]
]
array[0][6] = false // works
,您應該使用的元組數組來代替。使更好的代碼,執行更好,並且不依賴於Objective-C:
var array = [
(12,46,["a","b","c"],"nil",true,7,true),
(10,40,["c","d","e"],"nil",true,7,true),
(0,1,["z","l","w"],"hey",false,7,true)
]
// Array has type [(Int, Int, [String], String, Bool, Int, Bool)]
array[0].6 = false
這澄清程序員的目的,特別是因爲外陣列的所有條目具有相同的結構('Int','Int','[字符串]','String','Bool','Int','Bool') 。 –
謝謝你已經工作了! – Theilya
我不知道爲什麼Swift編譯器默認爲非Swift本機類型'NSArray'? –