2017-10-18 51 views
1

我用var timeTableTemp初始化一個變量:[[Any] ] = [],但不可能利用該結果,當我與填寫:iOs:(Swift 3)我用var變量初始化了[[Any]] = [],但是錯誤信息[type'Any'沒有下標成員]

timeTableTemp[i][j] = [Date1, Date2] 

當我試圖利用其結果:

let slot = self.timeTableTemp[i][j] 
print(slot[1]) 

我有錯誤消息:「類型「任何「沒有下標成員」

提前致謝。

+1

將數組聲明更改爲'[[[Date]]]'。順便說一句,這看起來很複雜。你應該發佈你想要完成的事情。可能有更簡單的方法來解決您的問題。 –

回答

2

slot包含您的時間([Date1, Date2]),但是編譯器不知道:你的陣列是[[Any]]類型,這意味着slot是作爲Any的。

你可以將它轉換爲一個數組,以使用標功能,如:

(slot as! [Date])[0] 

一個更好的解決辦法是將你的數據模型改變爲[[[Date]]],所以編譯器可以推斷slot的類型:

var timeTableTemp: [[[Date]]] //... 
let slot = timeTableTemp[i][j] 
print(slot[1]) // slot is of type [Date] now and supports subscripting 

你應該儘量避免Any儘可能:雨燕使用Any當你把自己的真棒型系統。

+4

不要暗示強制施放。如果讓和安全地使用它,請使用它。最好更改數組類型。順便說一句,他還需要檢查陣列數量,然後嘗試下標數組。 –

+0

使用您的反饋 – XML

+0

更新了我的答案,但仍缺少對陣列計數的檢查。如果你傳遞一個無效索引,它會使應用程序崩潰 –