2017-12-27 4 views
0

ユーザーログインに成功した後、Facebook SDK、(swift 4、Xcode 9)に関する問題が発生しました。メールアドレス、名前などのユーザーアカウントに関する詳細を取り戻そうとしていますと絵。FBSDKGraphRequestの結果オブジェクトを使用した問題

は、しかし、以下のコードは、これは私が得ているエラーです。このライン

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

上の私のコンパイラエラーを与えます。

オプションの値 'Any?'アンラップされていない。あなたは '!'を使うつもりでしたか? または '?'?

ここには、ユーザープロファイル情報を取得するコードを持つ完全な関数があります。私は、 '!'を使用して、オプションのテストをさまざまに試みました。すべてがコンパイラエラーとなります。

func fetchProfile() { 
     print("in fetch profile") 

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

      print("In FBSDKGraphRequest") 

      print(result) 
      if error != nil { 
       print(error as Any) 
       return 
      } 

      if let email = result["email"] as? String 
      { 
       print(email) 
      } 
     } 
    } 

助けてください。

答えて

2

通常、結果はスワップ辞書[文字列:任意]と解釈できます。だから結果を[String:Any]にキャストしてから、電子メールをStringとして取得しようとすることができます。

if let result = result as? [String: Any] { 
    if let email = result["email"] as? String { 
     print(email) 
    } 
} 
+0

ありがとう、ああ、私はあなたが両方の側にハッシュと値をキャストできることを認識していませんでした。私は答えとしてマークします。 –

関連する問題