//请求搜索的城市数据
func searchmeng(search:String,vc:UIViewController,completion:@escaping(Any,Bool) ->Void) {
//(1)判断无网络状态
if Reachability.forLocalWiFi().currentReachabilityStatus() == NotReachable && Reachability.forInternetConnection().currentReachabilityStatus() == NotReachable {
vc.showAlert(msg:"网络错误请检查网络", sec:2.0)
completion("error",false)
return
}
//(2)状态栏中的菊花开始转动
UIApplication.shared.isNetworkActivityIndicatorVisible = true
// (3)网址字符串封装
let url = URL.init(string: "http://api.jisuapi.com/illegaladdr/city")
// (4)创建请求对象
var req =URLRequest.init(url: url!, cachePolicy: .reloadIgnoringCacheData, timeoutInterval:15.0)
//设置请求方式为POST
req.httpMethod="POST"
//将所有参数拼成一个字符串
let str = "city=\(search)&num=10&appkey=de394933e1a3e2db"
//设置请求对象的请求体
req.httpBody= str.data(using: .utf8)
//(5)会话对象请求网络数据
URLSession.shared.dataTask(with: req){(data:Data?,response,error)in
//停止菊花转动
DispatchQueue.main.async{
UIApplication.shared.isNetworkActivityIndicatorVisible = false
}
//如果服务器连接失败
if error !=nil{
DispatchQueue.main.async{
vc.showAlert(msg:"服务器超时", sec:2.5)
}
return
}
//JSON解析
let jsonData = try?JSONSerialization.jsonObject(with: data!, options: .allowFragments)
if jsonData ==nil{
DispatchQueue.main.async{
vc.showAlert(msg:"网络数据错误", sec:2.5)
}
return
}
//如果正确,将解析的json数据返回给Controller
let jsonDic = jsonDataas!NSDictionary
let status = jsonDic.value(forKey:"status")as!NSString
let msg = jsonDic.value(forKey:"msg")as!String
if status.intValue!=0{
//返回主线程
DispatchQueue.main.async{
vc.showAlert(msg: msg, sec:2.0)
}
return
}
//得到json数据中的result字段对应的字典
let resultArr = jsonDic.value(forKey:"result")as!NSArray
//Model封装
var modelArr :[city] = []
//遍历数组中的每个字典
for item in resultArr
{
let itemDic = item as! NSDictionary
let one =city()
one.province= itemDic.value(forKey:"province")as? String
one.content= itemDic.value(forKey:"content")as? String
one.city= itemDic.value(forKey:"city")as? String
one.town= itemDic.value(forKey:"towm")as? String
one.address= itemDic.value(forKey:"address")as? String
one.num= itemDic.value(forKey:"num")as? String
one.lat= itemDic.value(forKey:"lat")as? String
one.lng= itemDic.value(forKey:"lng")as? String
modelArr.append(one)
}
completion(modelArr,true)
}.resume()
}