Swift 3 Type 'Any' 没有下标成员
Posted
技术标签:
【中文标题】Swift 3 Type \'Any\' 没有下标成员【英文标题】:Swift 3 Type 'Any' has no subscript membersSwift 3 Type 'Any' 没有下标成员 【发布时间】:2016-09-29 19:56:57 【问题描述】:我刚刚将我的项目转换为 Swift 3 我这里有这行代码:
let type = self.data[indexPath.row]["Type"] as? String
但现在我收到此错误:
Type 'Any' has no subscript members
为什么我会收到此错误,我应该修复它吗?
【问题讨论】:
Type 'Any' has no subscript members in Swift 3 Xcode 8的可能重复 【参考方案1】:let type = (self.data[indexPath.row] as? [String : String])?["Type"]
您需要将self.data[indexPath.row]
转换为字典。
【讨论】:
【参考方案2】:您的data
或下标时返回的值,例如data[0]
具有 Any
类型,您正在尝试对其下标。
确保编译器知道你得到的任何东西都是支持下标的已知类型。例如,like 和数组或字典。
【讨论】:
【参考方案3】:Even I was facing the same error
for item in 0...((currentSectionCells as! NSMutableArray).count - 1)
if currentSectionCells[item]["isVisible"] as! Bool == true
// error "Type 'Any' has no subscript "
Then changed to code as below
for item in 0...((currentSectionCells as! NSMutableArray).count - 1)
if (item as! NSDictionary).value(forKey: "isVisible") as! Bool == true
然后编译没有错误。
【讨论】:
这并不是对所提出问题的真正答案。接受的答案已经将强制转换指定为字典,对于 OP 的代码,您的答案既特定于您的用例(不回答问题),而且强制转换不安全。以上是关于Swift 3 Type 'Any' 没有下标成员的主要内容,如果未能解决你的问题,请参考以下文章
错误:键入 [AnyHashable: Any]?没有下标成员 (Swift)
Swift:将 oldArray[][] 复制到 newArray[][] 会导致错误(类型 'Any' 没有下标成员)