gpt4 book ai didi

swift - 如何将异步请求的回调结果返回给函数?

转载 作者:行者123 更新时间:2023-11-28 07:11:59 25 4
gpt4 key购买 nike

我正在尝试从异步请求的回调中返回数据,如下所示,但它显然不起作用。我想将回调 block 内的值返回给主函数,其他类可以通过类似 var sentiment = requestSentiment(text)

的方式调用此函数
func requestSentiment(inputText : String!) -> NSDictionary?  {
var searchString = inputText.stringByReplacingOccurrencesOfString(" ", withString: "+", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
var escaspedSearchString = searchString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
var url = "\(baseURL)/sentiment?text=\(escaspedSearchString)"
self.request.URL = NSURL(string: url)
println(url)
NSURLConnection.sendAsynchronousRequest(self.request, queue :NSOperationQueue()) { (response:NSURLResponse!, data:NSData!, error:NSError!) -> Void in
var error:AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult:NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: error ) as? NSDictionary
if (jsonResult != nil ){
return jsonResult
} else {
NSLog("No data return")
return nil
}
}
}

我很感激任何人都可以帮助我,谢谢!

最佳答案

您尝试执行的操作本质上是不可能的,因为请求是异步的。此外,您可能不想阻塞等待同步调用完成的主线程。

您需要更改您的设计,以便调用方将委托(delegate)对象传递给您的函数。然后,sendAsynchronousRequest 的完成处理程序可以调用委托(delegate)的方法。

关于swift - 如何将异步请求的回调结果返回给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28126877/

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