【问题标题】:Facebook SDK error for subscript members [duplicate]下标成员的 Facebook SDK 错误 [重复]
【发布时间】:2016-09-28 07:14:15
【问题描述】:

我最终使用 Facebook SDK 登录和获取数据,但无法解决我面临的与语法相关的挑战

func fetchProfile() {
    let parameters = ["fields": "email, first_name, last_name, picture.type(large)"]
    FBSDKGraphRequest(graphPath: "me", parameters: parameters).start(completionHandler: { (connection, user, requestError) -> Void in

        if requestError != nil {
            print(requestError)
            return
        }

        var email = user["email"] as? String
        let firstName = user["first_name"] as? String
        let lastName = user["last_name"] as? String

        self.nameLabel.text = "\(firstName!) \(lastName!)"

        var pictureUrl = ""

        if let picture = user["picture"] as? NSDictionary, let data = picture["data"] as? NSDictionary, let url = data["url"] as? String {
            pictureUrl = url
        }

    })
}

var email = user["email"] as ? String 行中我收到任何类型的错误?没有成绩单。

【问题讨论】:

标签: ios xcode swift3 facebook-sdk-4.0


【解决方案1】:

试试这个:

if let dataDict = user as? [String:AnyObject] {
    var email     = dataDict["email"] as? String
    let firstName = dataDict["first_name"] as? String
    let lastName  = dataDict["last_name"] as? String

    //self.nameLabel.text = "\(firstName!) \(lastName!)"

    var pictureUrl = ""

    if let picture = dataDict["picture"] as? [String:AnyObject], let data = picture["data"] as? [String:AnyObject], let url = data["url"] as? String {
        pictureUrl = url
    }
}

你需要将user类型Any转换为类型Dictionary[String:AnyObject],然后才可以使用下标从中提取值。

【讨论】:

  • 更新了代码。
  • 使用未解析的标识符 dataDict in ' if let picture =dataDict["pic......'
  • 我认为你缺少括号,整个代码应该在if let条件内,我们已经定义了dataDict
  • 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
相关资源
最近更新 更多