2015-08-06 6 views
0
граф Facebook

я хочу, и я не знаю, как = (закрыть мой граф блок FacebookSwift как закрыть блок

Моя проблема заключается в том, что я хочу, чтобы сохранить имя моего пользователя Facebook в переменной ., чтобы использовать его позже (другой вид контроллера), но я не могу, потому что мой блок закрыт после того, как я пытаюсь сохранить данные

Это мой делегат функции:

// Facebook Delegate Methods 
    func loginButton(connection: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 

     if (error != nil) 
     { 
      println("Error") 
     } 
     else { 
      println("User logged in") 
      self.returnUserData() 
     } 
    } 

И это моя функция которые используют график facebook api

// Here my block that I want to close, maybe with completion closure inside 
    func returnUserData() 
    { 
     let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]) 
     // Launch asynchronous function 
     var userName : String = "error" 
     graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

      if ((error) != nil) 
      { 
       // Process error 
       println("Error: \(error)") 
      } 
      else 
      { 
       println(result) 
       userName = result["first_name"] as! String 
      } 
     }) 
    } 

Может кто-нибудь мне помочь?

+0

Вы можете добавить какую ошибку или какая у вас проблема? –

+0

Done;) @thefredelement – Michal

+0

Просто объявите переменную имени пользователя за пределами закрытия, чтобы вы могли получить к ней доступ в другом месте. –

ответ

0

Взгляните на этот пример, вы можете установить переменную вне сферы вашего закрытия затем попросите его выполнить определенную FUNC, когда это значение устанавливается следующим образом:

import UIKit 

class ViewController: UIViewController { 

var myString : String = "123" { 

    didSet { 

     self.stringUpdated() 
    } 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    myString = "456" // this would take place in your graph request closure 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func stringUpdated() { 

    println("got it, string is \(myString)") 
} 


} 
+0

Большое вам спасибо :) – Michal

Смежные вопросы