2016-09-21 38 views
2

我想在我的應用程序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. 
    } 
} 
+0

這可能幫助:http://stackoverflow.com/questions/39516199/type-any-has-no-下標 - 成員在Xcode-8-swift-3/39516303#39516303 –

回答

4

改變這種

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

Xcode是建議更改以下行 let email = resultNew [「email」] 到 let email = resultNew?[「email」] 和值在這封電子郵件中是零。 – Vyshakh

+0

@Vyshakh - 哪一行 –

+0

更新的評論 – Vyshakh

2

對於斯威夫特3

改變這一點 - >

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

進入 - >

if let fbemail = (result as AnyObject)["email"]! as? String 
{ 
    print(fbemail) 
} 
+0

這個問題已經從去年接受的答案。您的答案不會增加或改善任何內容。你所做的只是復活舊的問題。 – Fogmeister

+0

@Fogmeister,那對我不起作用,所以我發佈了我的答案,因爲它可以幫助某個人,發佈一個答案不會傷害任何人,他們是沒有意義的,通過你的stackoverflow找到許多答案,而不是接受的答案。你的問題是什麼? – srivas

相關問題