URLService 继承 NSObject

    //请求搜索的城市数据

    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()


    }

你可能感兴趣的:(URLService 继承 NSObject)