Type Any没有下标成员(Array,Swift 3.0)

WiT*_*UC3 0 arrays xcode ios swift swift3

2年前我开发了一个iOS应用程序,现在我需要更新它.我刚刚将我的Swift项目转换为3.0,我正在使用XCode8.我已经解决了几乎所有的问题,但即使在搜索已经打开的几乎所有关于此错误的问题之后我也无法解决这个问题"Type Any没有下标成员"

感谢你们对我的帮助

在此输入图像描述

E-R*_*die 6

问题

您遇到的问题是您尝试访问subscript(对象是类型的)当前案例是尝试通过字符串键获取值Any.

arrayPrefs是一个NSArray桥接到Swift as的[Any].因为这是一个数组,你得到的值是arrayPrefs [index],到目前为止我们还不错.现在因为数组中的元素的类型Any通过键访问它不起作用,因为Any没有下标.为了访问下标,首先需要检查元素(Any)是否可以被类型转换为Dictionary<String, Any>([String: Any]).

要实现它,改变

prefToLoad = arrayPrefs[indexPath.row]["url"] as! String

if let pref = arrayPrefs[indexPath.row] as? [String: Any] {
    prefToLoad = pref["url"] as! String

    // The rest of your code
}
Run Code Online (Sandbox Code Playgroud)