我正在尝试在Swift中执行FBSDKGraphRequest并在其中运行一些代码。问题是,在以下代码中,"Boston"
正在"numbersArray: \(numbersArray)")
之前打印,这对我来说没有意义。 graphRequest
函数不应该在它之前的任何内容之前完成执行吗?我该如何解决这个问题?
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 :(得分:0)
这是因为在graphRequest.startWithCompletionHandler中设置了一个闭包,当请求完成时,它将被异步调用。
尽管可以以某种方式转换同步调用中的调用,但它没有意义,因为这是预期的行为,否则线程(可能是main_thread)将一直停留,直到调用完成。 / p>