我必须从getResonse(url)调用web服务,然后我想返回json。我无法如何在完整的处理程序中返回json。他们给我错误在void函数中出现意外的非void返回值请帮助。任何帮助都会得到帮助。在此先感谢
func GetStation(url : String) {
var dict = NSDictionary()
dict = getResonse(url)
}
func getResonse(myUrl:NSString) ->NSDictionary
{
let request = NSMutableURLRequest(URL: NSURL(string: myUrl as String)!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringCacheData, timeoutInterval: 30)
let session = NSURLSession.sharedSession()
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "GET"
let task = session.dataTaskWithRequest(request) { data, response, error in
guard data != nil else{
return
}
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
print(json)
if (data == nil)
{
return nil
error
}
else
{
return json
error
}
}else {
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding) // No error thrown, but not NSDictionary
print("Error could not parse JSON: \(jsonStr)")
}
} catch let parseError {
print(parseError) // Log the error thrown by `JSONObjectWithData`
let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
}
task.resume()
}
答案 0 :(得分:1)
这只是一个编码错误(可能是因为括号遍布整个地方)。
在你的完成处理程序中,你有3个强制退出,其中两个返回一个值,另一个不返回。
来自“警卫数据......” - >别的{return}
在do {... return nil ...或return json ...}
从错误消息中我收集到后两次返回不正确。
答案 1 :(得分:0)
你在NSUrlSession的dataTaskWithRequest:
里面,它返回
func dataTaskWithRequest(request: NSURLRequest, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void) -> NSURLSessionDataTask
它返回块内的Void。所以它显示错误。