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

时间:2016-11-16 13:57:18

标签: ios arrays swift xcode swift3

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

感谢您帮助我

enter image description here

1 个答案:

答案 0 :(得分:6)

问题

您遇到的问题是您尝试访问Any(当前案例是尝试通过字符串键获取值),其中您的对象的类型为{{ 1}}。

解决方案

arrayPrefs NSArray,它与[Any]桥接到Swift。由于这是一个数组,您获得的值 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
}