Swift 3错误:键入'任何'没有下标成员

时间:2016-10-07 16:39:21

标签: swift

所以我知道这个问题之前已被多次询问和回答,但我刚刚将我的项目迁移到Swift 3,我在我的代码中得到了大量的这些错误,解析了JSON,我无法找到答案这让我明白了如何解决我的具体问题。

guard let result = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject] else {
        return
    }
    guard let responseData = result["Data"] else { return }
    guard let userData = responseData["UserProfile"] else { return }

    var userProfileFieldsDict = [String: String]()

    if let sessionToken = userData!["CurrentSessionToken"] as? NSString {
        userProfileFieldsDict["sessionToken"] = String(sessionToken)

    }
}

if let sessionToken行抛出上述错误,但不太确定你应该如何在Swift 3中处理这个错误?有人可以解释并建议最佳实践修复吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

如果responseData["UserProfile"]也是字典,您可能希望通过说guard let userData = responseData["UserProfile"] as? [String : AnyObject] else { return }来保护它。我怀疑这会解决你的问题。

作为一个小小的一边,你不需要在你的if中强行解包userData,因为你已经把它打开了。