2015-05-26 4 views
0

Я пытаюсь выполнить FBSDKGraphRequest в Swift и запустить внутри него некоторый код. Проблема в том, что в следующем коде "Boston" печатается до "numbersArray: \(numbersArray)"), что для меня не имеет смысла. Должна ли функция graphRequest завершить выполнение перед тем, что следует за ней? Как я могу исправить эту проблему?Facebook/Swift: Отладчик, пропуская строки

class Test { 

    class func test() { 

     let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me/", parameters: nil) 
     graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in 

      var array = ["1", "2", "3"] 
      var numbersArray = [String]() 

      for number in array { 
       numbersArray.append(number) 
      } 

      println("numbersArray: \(numbersArray)") 

     }) 

     println("Boston") 

    } 
} 

ответ

0

Это происходит потому, что в graphRequest.startWithCompletionHandler вы установили замыкание, которое будет вызываться асинхронно, когда запрос сделал.

Хотя можно было бы каким-то образом преобразовать вызов в синхронный вызов, это не имеет смысла, потому что это ожидаемое поведение, иначе поток, возможно, main_thread, будет застревать до тех пор, пока вызов не будет выполнен.

+0

Это имеет смысл. Но он просит меня задать другой вопрос. Буду признателен, если вы посмотрели: http://stackoverflow.com/questions/30470328/fb-swift-how-to-append-an-array-via-a-for-loop-in-fbsdkgraphrequest – chicobermuda

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