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])
我有错误消息:“类型“任何“没有下标成员”
提前致谢。
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
当你把自己的真棒型系统。
不要暗示强制施放。如果让和安全地使用它,请使用它。最好更改数组类型。顺便说一句,他还需要检查阵列数量,然后尝试下标数组。 –
使用您的反馈 – XML
更新了我的答案,但仍缺少对阵列计数的检查。如果你传递一个无效索引,它会使应用程序崩溃 –
将数组声明更改为'[[[Date]]]'。顺便说一句,这看起来很复杂。你应该发布你想要完成的事情。可能有更简单的方法来解决您的问题。 –