正在学习swift,想用URLSession封装一个简单的GET请求类,代码如下
func myreq(url:String) -> JSON{
var myjson:JSON = []
let myurl = URL(string:url)
var request = URLRequest(url:myurl!)
request.httpMethod = "GET"
let session = URLSession.shared
let dataTask = session.dataTask(with:request, completionHandler:{ (data, response, error) in
if error != nil{
print(error!)
}else{
myjson = JSON(data!)
//print(myjson)
}
})
dataTask.resume()
print(myjson)
//返回一个JSON
return myjson
}
这样是无法得到结果的(下面的myjson打印为空,但是放到上面打印就可以得到结果),请问我该怎么改进?
下面的
print
是在主线程中执行的, 上面的print
是在子线程中请求得到响应后, 再切换到主线程中执行.改进:
调用: