2016-09-28 13 views
-2

我使用Facebook的SDK进行登录,并在我的最终获取的数据,但未能解决我所面临的语法的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我得到错误的相关挑战的问题键入任何?没有成绩单。

+0

http://stackoverflow.com/questions/39516199/type-any-has-no-subscript-members-in-xcode-8-swift-3/39516303#39516303 –

+0

你能打印'user' –

+0

@Mr .UB它力气解决我的目的 – Rupinder

回答

7

试试这个:

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 
    } 
} 

你需要转换的userAny键入词典[String:AnyObject],那么不仅可以使用标从中提取价值。

+0

更新的代码。 –

+0

使用未解析的标识符dataDict'if let picture = dataDict [“pic ......' – Rupinder

+0

我认为你缺少括号,整个代码应该在'if let'条件之内,我们已经定义了'dataDict' –