Swift 如何返回异步请求';函数的回调结果是什么?
我试图从异步请求的回调返回数据,如下所示,但显然不起作用。我希望将回调块中的值返回给main函数,其他类可以通过类似Swift 如何返回异步请求';函数的回调结果是什么?,swift,Swift,我试图从异步请求的回调返回数据,如下所示,但显然不起作用。我希望将回调块中的值返回给main函数,其他类可以通过类似var-touction=requesttouction(text) func(inputText:String!)->NSDictionary?{ var searchString=inputText.stringByReplacingOccurrencesOfString(“”,带字符串“+”,选项:NSStringCompareOptions.CaseInsensitiveS
var-touction=requesttouction(text)
func(inputText:String!)->NSDictionary?{
var searchString=inputText.stringByReplacingOccurrencesOfString(“”,带字符串“+”,选项:NSStringCompareOptions.CaseInsensitiveSearch,范围:nil)
var escaspedSearchString=searchString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
var url=“\(基本url)/情绪?文本=\(escaspedSearchString)”
self.request.URL=NSURL(字符串:URL)
println(url)
NSURLConnection.sendAsynchronousRequest(self.request,queue:NSOperationQueue()){(响应:NSURLResponse!,数据:NSData!,错误:NSError!)->中的Void
var错误:AutoreleasingUnsafeMutablePointer=nil
将jsonResult:NSDictionary!=NSJSONSerialization.JSONObjectWithData(数据,选项:NSJSONReadingOptions.MutableContainers,错误:error)设为?NSDictionary
if(jsonResult!=nil){
返回jsonResult
}否则{
NSLog(“无数据返回”)
归零
}
}
}
我很感激有人能帮我,谢谢 由于请求是异步的,因此您尝试执行的操作本质上是不可能的。此外,您可能不希望阻塞等待同步调用完成的主线程
您需要更改设计,以便调用者将委托对象传递给您的函数。然后,
sendAsynchronousRequest
的完成处理程序可以调用委托的方法。可能重复hi@fred谢谢!您能更具体地说明如何做到这一点吗?谢谢问题已经通过实现完成处理程序解决了,谢谢
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
}
}
}