2016-09-14 17 views
6

Merhaba güncelledik ve hatayı alıyorum: Aşağıdaki kod hatları içinSwift 3 - 'Any?' Türünün değeri Ben 3 hızlı hiçbir üye 'valueForKey'

Value of type 'Any?' has no member 'valueForKey'

: tezler hatalar için açıklama nedir

let userName : NSString? = result.valueForKey("name") as? NSString 
let facebookID : NSString? = result.valueForKey("id") as? NSString 
let firstName : NSString? = result.valueForKey("first_name") as? NSString 
let lastName : NSString? = result.valueForKey("last_name") as? NSString 
let email : NSString? = result.valueForKey("email") as? NSString 

ve tamir etmek için nasıl giderim?

Çok teşekkürler!

DÜZENLEME:

Tam Kod:

if((FBSDKAccessToken.current()) != nil){ 
 
      FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: { (connection, result, error) -> Void in 
 
       if (error == nil){ 
 
        
 
        
 
        let userName : NSString? = result.valueForKey("name") as? NSString 
 
        let facebookID : NSString? = result.valueForKey("id") as? NSString 
 
        let firstName : NSString? = result.valueForKey("first_name") as? NSString 
 
        let lastName : NSString? = result.valueForKey("last_name") as? NSString 
 
        let email : NSString? = result.valueForKey("email") as? NSString 
 
       

CEVAP:

FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: { (connection, result, error) -> Void in 
 
       if (error == nil){ 
 
        
 
        let data:[String:AnyObject] = result as! [String : AnyObject] 
 
        
 
        
 
        let userName : NSString? = data["name"]! as? NSString 
 
        let facebookID : NSString? = data["id"]! as? NSString 
 
        let firstName : NSString? = data["first_name"]! as? NSString 
 
        let lastName : NSString? = data["last_name"]! as? NSString 
 
        let email : NSString? = data["email"]! as? NSString

+0

zorlamak için değil NSString ve daha iyi kullanmak yerine saf hızlı bir yaklaşım kullanmak ? – FelixSFD

+1

"Sonuç", belirtilmemiş "Any" – vadian

+1

'dan daha anlamlı bir şeye dönüştürülebilir Artık kimlik, AnyObject yerine Any olarak içe aktarıldığı için, daha önce Dinamik arama yaptığınız hataları burada görebilirsiniz [burada] (https'de) AnyObject.' : //developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html) _ctrl + f -> any_ – Zico

cevap

3

bir cevap bulmak olsa ama onun daha iyi yerine ne olduğunu tip `result` tanımlamak ve nasıl, bize edebilirmisiniz unwrap isteğe bağlı öğeleri

FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"]).start(completionHandler: { (connection, result, error) -> Void in 
      if (error == nil){ 
        guard let data = result as? [String:Any] else { return } 

        let fbid = data["id"] 
        let username = data["name"] 
        let firstName = data["first_name"]