gpt4 book ai didi

ios - Swift等待异步返回

转载 作者:可可西里 更新时间:2023-11-01 01:05:28 25 4
gpt4 key购买 nike

我在 swift 中使用 Facebook API,我想在异步函数 FBSDKGraphRequest 结果准备就绪时捕捉。

我使用这个函数从 Facebook 返回数据

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

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
let userName : String = result.valueForKey("name") as! String
self.userFB = userName
}
})
}

最佳答案

如果您四处搜索,您会发现许多完成处理程序和闭包的示例。以下是对代码的简单修改,以在完成时返回结果。

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

if ((error) != nil)
{
// Process error
println("Error: \(error)")
}
else
{
let userName : String = result.valueForKey("name") as! String
completion(result:userName)
}
})
}

现在在您的主代码中,您可以像下面这样调用此函数:

returnUserData({(result)->Void in 
self.userFB = result
//CONTINUE RUNNING THE APP WITH OTHER METHODS OR FUNCTIONS
continueDoingSomething()
})

所以你所做的是,你只会在你获得 FB 用户 ID 后继续你的应用程序中的其他操作,而不会真正卡住后面的主线程。有很多有效的方法可以做到这一点,谷歌搜索和阅读有关该主题的内容会有所帮助。

关于ios - Swift等待异步返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31852484/

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