输入“任何?”没有下标成员[重复]

Posted

技术标签:

【中文标题】输入“任何?”没有下标成员[重复]【英文标题】:Type 'Any?' has no subscript members [duplicate] 【发布时间】:2016-09-21 09:19:14 【问题描述】:

我正在尝试在我的应用程序中登录 fb 后检索电子邮件 ID。但是,当我尝试从结果中获取值时出现错误。

错误是:Type 'Any?' has no subscript members

func fetchProfile()

    print("Fetch Profile")
    let parameters = ["fields": "email, first_name, last_name,  picture.type(large)"]
    FBSDKGraphRequest(graphpath: "me", parameters: parameters).start  (connection, result, error) in

        let email = result["email"] as? String  //Type 'Any?' has no subscript members error occurs here.
    

【问题讨论】:

这可能会有所帮助:***.com/questions/39516199/… 【参考方案1】:

改一下

 let email = result["email"] as? String

进入

  guard let resultNew = result as? [String:Any] 

 let email = resultNew["email"]  as! String

完整答案

let parameters = ["fields": "email, first_name, last_name,  picture.type(large)"]
    FBSDKGraphRequest(graphPath: "me", parameters: parameters).start  (connection, result, error) in

        guard let resultNew = result as? [String:Any] 

       let email = resultNew["email"]  as! String
    

【讨论】:

Xcode 建议将下面这行 let email = resultNew["email"] 更改为 let email = resultNew?["email"] 这样做后 email 中的值为零。 @Vyshakh - 哪一行 更新评论 你在这里得到什么结果resultNew 我也得到了零【参考方案2】:

适用于 Swift 3

改变这个-->

let email = result["email"] as? String

进入-->

if let fbemail = (result as AnyObject)["email"]! as? String

   print(fbemail)

【讨论】:

从去年开始,这个问题已经有了一个公认的答案。您的回答不会增加或改善任何东西。你所做的只是复活旧问题。 @Fogmeister,这对我不起作用,所以我发布了我的答案,因为它可能对某些人有所帮助,发布答案不会伤害任何人,他们没有必要给低分,通过***,您会找到许多答案,而不是公认的答案。你给降分有什么问题?

以上是关于输入“任何?”没有下标成员[重复]的主要内容,如果未能解决你的问题,请参考以下文章

类型“任何”没有下标成员[重复]

类型“任何”没有下标成员[重复]

为firebase数据库创建用户对象时,类型“任何”没有下标成员[重复]

在 swift 3 中打印 json 时出现任何下标成员错误 [重复]

类型“Any”没有下标成员/Swift 3 [重复]

类型“any”在alamofire 4 iOS swift中没有下标成员[重复]