2016-09-14 21 views
6

Hi Tôi đã cập nhật để nhanh chóng 3 và đang nhận được lỗi:Swift 3 - Giá trị của loại 'Bất kỳ?' đã không có thành viên 'valueForKey'

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

cho các dòng mã sau đây:

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 

lời giải thích cho luận án lỗi là gì và làm thế nào tôi sẽ đi về sửa chữa nó?

Rất cám ơn!

EDIT:

Full Code:

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 
 
       

ĐÁP:

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

bạn có thể vui lòng chỉ cho chúng ta, làm thế nào bạn xác định 'result' và loại nó là ? – FelixSFD

+1

Bạn có thể truyền 'kết quả' thành một cái gì đó có ý nghĩa hơn so với' Không xác định ' – vadian

+1

'Vì id bây giờ được nhập dưới dạng Bất kỳ thay vì AnyObject, bạn có thể thấy lỗi mà trước đây bạn thực hiện tra cứu động trên AnyObject.' trong [đây] (https : //developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html) _ctrl + f -> any_ – Zico

Trả lời

3

Mặc dù bạn tìm câu trả lời nhưng nó tốt hơn để sử dụng cách tiếp cận nhanh chóng tinh khiết hơn là sử dụng NSString và tốt hơn không để buộc optionals Unwrap

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"] 
Các vấn đề liên quan