POST

111

let recipeVC = recipeViewController()

        recipeVC.navigationController?.title = "caipi"

        let recipeNav = UINavigationController(rootViewController: recipeVC)

        self.window?.rootViewController = recipeNav


222

import UIKit


class URlService: NSObject
{

//    所有的请求搜索的菜谱数据
   
    func searchRecipes(search:String,vc:UIViewController,completion:@escaping (Any,Bool) -> Void)
    {
        //  (1)  判断无网络情况
        if Reachability.forLocalWiFi().currentReachabilityStatus() == NotReachable && Reachability.forInternetConnection().currentReachabilityStatus() == NotReachable {
            vc.showAlert(msg: "网络错误", sec: 2.5)
            completion("error",false)
            return
        }
       
        //有网络菊花开始转动
//        状态栏中的菊花开始转动
        UIApplication.shared.isNetworkActivityIndicatorVisible = true
//        网址字符串封装
        let url = URL.init(string: "http://api.jisuapi.com/dream/search")
//        (4)创建请求对象
        var req = URLRequest.init(url: url!, cachePolicy: .reloadRevalidatingCacheData, timeoutInterval: 15.0)
//        设置请求方式为post
        req.httpMethod = "POST"
        // 将所有的参数拼接成一个字符串
        let str = "keyword=\(search)&num=10&appkey=de394933e1a3e2db"
       
//        设值请求对象的请求体
        req.httpBody = str.data(using: .utf8)
//        (5)会话对象请求网络数据
        URLSession.shared.dataTask(with: req) { (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
//            completion(jsonData!,true)
            let jsonDic = jsonData as! 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.5)
                }
                return
            }
            let resultDic = jsonDic.value(forKey: "result") as! NSDictionary
//            获取result字典中的list数组
            let listArr = resultDic.value(forKey: "list") as! NSArray
           
            // MOdel封装
            var modelArr:[Recipe] = []
//            遍历数组中的每个字典
            for item in listArr{
                let itemDic = item as! NSDictionary
                let one = Recipe()
                one.name = itemDic.value(forKey: "name") as? String
                one.id = itemDic.value(forKey: "id") as? String
                one.content = itemDic.value(forKey: "content") as? String
                modelArr.append(one)
               
            }
            completion(modelArr,true)
           
        }.resume()
    }
}


333


    var id:String?

    var classid:String?

    var name:String?

    var peoplenum:String?

    var preparetime:String?

    var content:String?


444



//给UIViewController添加扩展

extension UIViewController{

    func showAlert(msg:String,sec:TimeInterval) {

        //    实例化一个弹出控制器

        let alertVC  = UIAlertController(title: nil, message: msg, preferredStyle: .alert)

        //    从vc控制器弹出提示控制器

        self.present(alertVC, animated: true, completion: nil)

        //    延时执行隐藏操作

        self.perform(#selector(hideAlertVc(sender:)), with: alertVC, afterDelay: sec)

    }

    @objc func hideAlertVc(sender:UIAlertController) {

        sender.dismiss(animated: true, completion: nil)

    }

}

recipeTF = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 50))

        recipeTF?.center = CGPoint(x: scrWidth/2, y: 200)

        recipeTF?.borderStyle = .line

        recipeTF?.placeholder = "请输入查询的菜谱"

        recipeTF?.textColor = UIColor.red

        recipeTF?.clearButtonMode = .unlessEditing

        recipeTF?.delegate = self

        self.view.addSubview(self.recipeTF!)

searchBtn = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))

        searchBtn?.center = CGPoint(x: scrWidth/2, y: 300)

        searchBtn?.setTitle("点击查询", for: .normal)

        searchBtn?.backgroundColor = UIColor.blue

        searchBtn?.setTitleColor(UIColor.yellow, for: .normal)

        searchBtn?.addTarget(self, action: #selector(btnDidpress(sender:)), for: .touchUpInside)

        self.view.addSubview(searchBtn!)

@objc func btnDidpress(sender:UIButton) {

        //判断用户有没有输入数据

        if(recipeTF?.text?.isEmpty)!{

            self.showAlert(msg: "信息不可为空", sec: 2.5)

            return

        }


// 实例化一个控制器对象

        let resultVC = RecipeResultViewController()

//        传递数据

        resultVC.passString = (recipeTF?.text)!

//        控制器跳转

        self.navigationController?.pushViewController(resultVC, animated: true)


override func touchesBegan(_ touches: Set, with event: UIEvent?) {

        super.touchesEnded(touches, with: event)

        recipeTF?.resignFirstResponder()

        //让view 还有子视图放弃编辑操纵,如果是textField就收回键盘

        self.view.endEditing(true)



555


import UIKit

class RecipeResultViewController: UIViewController,UITableViewDataSource {

    var passString:String = ""

    var tableData:[Recipe]?

    var table:UITableView?


    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view.

        self.view.backgroundColor = UIColor.blue

        self.navigationItem.title = "\"\(passString)\"的搜索结果"


        table = UITableView.init(frame: CGRect.init(x: 0, y: 0, width:scrWidth , height: scrHeight),style:.plain)

        table?.dataSource = self

//        self.table?.rowHeight = 200

        self.view.addSubview(self.table!)

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        if let count = tableData?.count{

            return count

        }

        return 0

//        return(tableData?.count)!


    }


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let identifier = "cell"

        var cell = tableView.dequeueReusableCell(withIdentifier: identifier)

        if cell == nil  {

            cell = UITableViewCell.init(style: .subtitle, reuseIdentifier: identifier)

        }

        let one = self.tableData![indexPath.row] as? Recipe

        cell?.textLabel?.text = one?.name

        cell?.detailTextLabel?.text = one?.content


        return cell!

    }


$(SRCROOT)/

最后网络请求 nsapp



    override func viewWillAppear(_ animated: Bool) {

//        请求网络数据


        let urlSer = URlService()

        urlSer.searchRecipes(search: self.passString, vc: self) { (data, success) in

            if !success{

                return

            }

            self.tableData = data as?[Recipe]

            DispatchQueue.main.async {

                self.table?.reloadData()


            }

        }

    }

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容