Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何返回异步请求';函数的回调结果是什么?_Swift - Fatal编程技术网

Swift 如何返回异步请求';函数的回调结果是什么?

Swift 如何返回异步请求';函数的回调结果是什么?,swift,Swift,我试图从异步请求的回调返回数据,如下所示,但显然不起作用。我希望将回调块中的值返回给main函数,其他类可以通过类似var-touction=requesttouction(text) func(inputText:String!)->NSDictionary?{ var searchString=inputText.stringByReplacingOccurrencesOfString(“”,带字符串“+”,选项:NSStringCompareOptions.CaseInsensitiveS

我试图从异步请求的回调返回数据,如下所示,但显然不起作用。我希望将回调块中的值返回给main函数,其他类可以通过类似
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
            }
        }
    }