iOs:(Swift 3)我用var变量初始化了[[Any]] = [],但是错误信息[type'Any'没有下标成员]

iOs:(Swift 3)我用var变量初始化了[[Any]] = [],但是错误信息[type'Any'没有下标成员]

问题描述:

我用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]]]'。顺便说一句,这看起来很复杂。你应该发布你想要完成的事情。可能有更简单的方法来解决您的问题。 –

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

更新了我的答案,但仍缺少对阵列计数的检查。如果你传递一个无效索引,它会使应用程序崩溃 –