gpt4 book ai didi

facebook - Xcode7 swift函数需要多少时间?比赛条件?

转载 作者:行者123 更新时间:2023-11-30 10:09:08 25 4
gpt4 key购买 nike

我的 Xcode 7 项目有一个关于 Facebook 的问题。当尝试通过图形请求检索我的数据时,函数 returnUserData 完成得太晚了?

//...
returnUserData()
print("finished")
//...

这是函数:

func returnUserData() {
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, email"])
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if error == nil
{
//print("fetched user: \(result)")
print("start");
self.username = result.valueForKey("name") as! NSString
//NSUserDefaults.standardUserDefaults().setObject(self.username, forKey: "name")
//NSUserDefaults.standardUserDefaults().synchronize()
print("1: " + (self.username as String))
}
else if (error != nil)
{
// Process error
print("Error: \(error)")
}
})

}

但这就是,发生了什么,看看顺序:

finished
start
1: My Name

如何防止这种情况发生?

最佳答案

那是因为 graphRequest.startWithCompletionHandler 调用是异步的。如果您在代码中的 returnUserData()print("finished") 处放置断点,您将在执行 graphRequest.startWithCompletionHandler 后看到,该函数将立即返回到 print("finished") 语句,并且完成处理程序中的语句不会执行(在调用 graphRequest.startWithCompletionHandler 之后立即执行)。

为了正确处理它,您可以在completionHandler中编写处理代码[例如:print("finished")],或者编写一个回调函数,您可以在之后将数据传递给该回调函数处理/验证服务器响应。

关于facebook - Xcode7 swift函数需要多少时间?比赛条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com