swift 3 错误 : Type 'Any' has no subscript members

标签 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 中处理这个错误?有人可以解释并建议最佳实践修复吗?

非常感谢!

最佳答案

如果 responseData["UserProfile"] 也是一个字典,您可能希望通过说 guard let userData = responseData["UserProfile"] as ? [字符串:AnyObject] else { return } 。我想这会解决您的问题。

顺便说一句,您不需要在 if let 中强制解包 userData,因为您已经在守卫中解包了它。

关于 swift 3 错误 : Type 'Any' has no subscript members,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39922140/

相关文章:

swift - 在 VSTS 上的云托管 Mac 上的 Xcode 中构建错误

Swift:无法更改数组中的 CALayer 背景颜色

swift - 如何在 Swift 中将字典切片转换为字典

macos - 为什么在 `viewDidLoad()` 之外的初始化会失败?

ios - 仅在 iPhone X (iOS 12) 上以横屏模式使用 UIImagePickerController 时应用程序崩溃

swift - TopAnchor 0 显示在中间

ios - 使用 Swift 协议(protocol)继承

ios - 仅在收到第一条消息后,如何应用“合并”运算符?

ios - 将对象表 IndexPath 设置为对象属性?

swift - 如何在 swift (Xcode 9) 中使用 zlib 中的 crc32