2016-04-23 23 views
0
import UIKit 
import Parse 
import FBSDKCoreKit 
import ParseFacebookUtilsV4 

class SignUpViewController: UIViewController 
{ 


    @IBOutlet weak var emailAddress: UILabel! 
    @IBOutlet weak var ProfileName: UILabel! 
    @IBOutlet weak var ProfilePic: UIImageView! 
    override func viewDidLoad() 
    { 
     super.viewDidLoad() 

     let requestParameters = ["fields": "id, email, first_name, last_name"] 

     let userDetails = FBSDKGraphRequest(graphPath: "me", parameters: requestParameters) 

     userDetails.startWithCompletionHandler { (connection, result, error:NSError!) -> Void in 

      if(error != nil) 
      { 
       print("\(error.localizedDescription)") 
       return 
      } 

      if(result != nil) 
      { 
     // The next Four lines show the same error as ambiguous Use of Subscript 
       let userId:String = result["id"] as! String 
       let userFirstName:String? = result["first_name"] as? String 
       let userLastName:String? = result["last_name"] as? String 
       let userEmail:String? = result["email"] as? String 


       self.ProfileName.text = userFirstName! + " " + userLastName! 

       let myUser:PFUser = PFUser.currentUser()! 

       // Save first name 
       if(userFirstName != nil) 
       { 
        myUser.setObject(userFirstName!, forKey: "first_name") 

       } 

       //Save last name 
       if(userLastName != nil) 
       { 
        myUser.setObject(userLastName!, forKey: "last_name") 
       } 

       // Save email address 
       if(userEmail != nil) 
       { 
        myUser.setObject(userEmail!, forKey: "email") 
        self.emailAddress.text = userEmail 
       } 

       dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 

        // Get Facebook profile picture 
        let userProfile = "https://graph.facebook.com/" + userId + "/picture?type=large" 

        let profilePictureUrl = NSURL(string: userProfile) 

        let profilePictureData = NSData(contentsOfURL: profilePictureUrl!) 

        if(profilePictureData != nil) 
        { 
         let profileFileObject = PFFile(data:profilePictureData!) 
         myUser.setObject(profileFileObject!, forKey: "profile_picture") 
         let image=UIImage(data: profilePictureData!) 
         self.ProfilePic.image=image 

        } 


        myUser.saveInBackgroundWithBlock({ (success:Bool, error:NSError?) -> Void in 

         if(success) 
         { 
          print("User details are now updated") 
         } 

        }) 

       } 

      } 

     } 
    } 

    override func didReceiveMemoryWarning() 
    { 
     super.didReceiveMemoryWarning() 

    } 

} 

代碼在運行之前,但在Xcode更新之後,它顯示此錯誤。如何刪除模糊使用下標錯誤?

+0

它有幫助。謝謝。 –

回答

0

而不是使用

if(result != nil) 

你應該做

if let result = result 

,並使用分支內展開的價值。

這樣,如果有必要,你也可以垂頭喪氣,如:

if let result = result as? NSDictionary 

如果你需要告訴編譯器result是一個NSDictionary。

ambiguous什麼ambiguous意味着編譯器無法推斷result的類型(在Swift 2.2中,編譯器對類型更加嚴格,不喜歡「猜測」)。