请求数据

创建桥接文件   导入3.0  


创建RecipeResultViewController,RecipeViewController,,XiangQingViewController, 继承uiviewcontroller  进行跳转

创建URLService  继承NSObject   创建 Recipe



.plist中   App Transport Security Settings    加Allow Arbitrary Loads


在AppDelegate中

   letdenglu  =  dengluViewController()

        //登录

        denglu.navigationItem.title = ""

        let nav1 = UINavigationController.init(rootViewController: denglu)



        self.window?.rootViewController = nav1


RecipeResultViewController中 关于什么什么的

import UIKit

class RecipeResultViewController: ViewController,UITableViewDelegate,UITableViewDataSource {




    var passString:String = ""

    var table : UITableView?

    var tableData:[Recipe]?


    var uitext :UITextField?



    var v2:UILabel?



    override func viewDidLoad() {

        super.viewDidLoad()



        self.navigationItem.title = "《关于\(passString)的相似结果》"



        //设置当前视图背景

       // self.table?.layer.contents = UIImage(named:"timg.png")?.cgImage




        table = UITableView(frame: CGRect(x: 0, y: 0, width: SCrwidth, height: SCrheight))

        table?.dataSource = self

        table?.delegate = self



        self.view.addSubview(table!)

    }


    override func viewWillAppear(_ animated: Bool) {

        super.viewWillAppear(animated)



        let urlser = URLService()


        urlser.GetRecipes(search: self.passString, vc: self) { (data, success) in

            if !success{

                return

            }


            self.tableData = data as? [Recipe]

            DispatchQueue.main.async {

                self.table?.reloadData()

            }

        }


    }


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

        if (tableData?.count) != nil {

            return (tableData?.count)!


        }

        return 0

    }


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


        let id = "cell"

        var cell = tableView.dequeueReusableCell(withIdentifier: id)




        cell =UITableViewCell(style: .subtitle, reuseIdentifier: id)



        let one = self.tableData![indexPath.row]


        let v = UILabel(frame: CGRect(x: 0, y: 0, width: SCrwidth, height: 30))

        v.font = UIFont.systemFont(ofSize: 18)


        v.textColor = UIColor.orange


        v.text = one.name

        v.textAlignment = NSTextAlignment.center

        v.font = UIFont(name: "Bobz Type", size: 26)

        v2 = UILabel(frame: CGRect(x: 0, y: 30, width: SCrwidth, height: 80))

        v2?.numberOfLines = 2

        v2?.font = UIFont.systemFont(ofSize: 16)

        //        v2?.font = UIFont(name: "Bobz Type", size: 16)


        v2?.text = one.content

        cell?.addSubview(v)

        cell?.addSubview(v2!)

        return cell!


    }


    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {


        return 120

    }



    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {


        //实例化结果控制器


        let xiangqingVC = XiangQingViewController()


        //传递数据


      //  xiangqingVC.passwith = (UITextFielding?.text)!

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




        xiangqingVC.one?.name = (one?.name)!

        xiangqingVC.one?.date = (one?.content)!

        xiangqingVC.xiangqingqing = (one?.content)!


        //控制器跳转

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


    }





}


搜索的RecipeViewController

import UIKit

let SCrwidth = UIScreen.main.bounds.size.width

let SCrheight = UIScreen.main.bounds.size.height

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(hidAlertVC(sender:)), with: alertVC, afterDelay: sec)

    }


    @objc func hidAlertVC(sender:UIViewController) -> Void {

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

    }

}

class RecipeViewController: UIViewController ,UITextFieldDelegate{

    var passwith:String = ""


    //

    //  XiangQingViewController.swift

    //  项目

    //

    //  Created by Kiming on 2018/6/13.

    //  Copyright © 2018年 KingMin. All rights reserved.

    //

    var RecipeTF : UITextField?  //菜谱输入框


    var SearchBtn : UIButton?  //搜索按钮





    override func viewDidLoad() {

        super.viewDidLoad()


        self.view.backgroundColor = UIColor.white

        //设置当前视图背景

        self.view.layer.contents = UIImage(named:"20150408H5819_PmTZe")?.cgImage


        RecipeTF = UITextField(frame: CGRect(x: 0, y: 0, width: 260, height: 50))


        RecipeTF?.center = CGPoint(x: SCrwidth/2, y: 200)


        RecipeTF?.borderStyle = .line


        RecipeTF?.placeholder = "请输入需要查询的菜谱"


        RecipeTF?.textColor = UIColor.red


        RecipeTF?.layer.cornerRadius = 9


        RecipeTF?.layer.masksToBounds = true


        RecipeTF?.textAlignment = .center


        RecipeTF?.clearButtonMode = .whileEditing


        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?.layer.cornerRadius = 9


        SearchBtn?.layer.masksToBounds = true


        SearchBtn?.backgroundColor = UIColor.blue


        SearchBtn?.alpha = 0.6




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


        SearchBtn?.addTarget(self, action: #selector(btnDidPress(sender:)), for: .touchUpInside)


        self.view.addSubview(self.SearchBtn!)


    }


   @objc func btnDidPress(sender:UIButton) -> Void {



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


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


        return

    }

    //实例化结果控制器


    let resuVC = RecipeResultViewController()


    //传递数据


    resuVC.passString = RecipeTF!.text!


    //控制器跳转

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


    }



    //点击return触发回调

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {


        //放弃第一响应

        textField.resignFirstResponder()


        return true

    }


    //点击空白处触发的方法


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


        super.touchesEnded(touches, with: event)


        //将view及其子视图放弃编辑,如果是Textfiled就收回键盘

        self.view.endEditing(true)


    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }


}



搞个详情的

import UIKit

class XiangQingViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

    var one:Movie?



    var xiangqingqing:String = ""


    var titleName:String = ""



    var uifidtext:UITextField?


    var table : UITableView?


    var tableData:[Recipe]?


    var uitext :UITextField?



    var v2:UILabel?




    override func viewDidLoad() {

        super.viewDidLoad()


       // DataHandle.shared().addOneMovie(passwd.self)


        self.view.backgroundColor = UIColor.white


        let rightBut = UIButton(frame: CGRect(x: 0, y: 0, width: 40, height: 40))


        rightBut.setTitle("收藏", for: .normal)


        rightBut.setTitleColor(UIColor.red, for: .normal)


        rightBut.addTarget(self, action: #selector(buttonDidPress), for: .touchUpInside)



        self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: rightBut)

        self.navigationItem.title = "详情"


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


        table?.dataSource = self


        table?.delegate = self




        self.view.addSubview(table!)





    }


    func buttonDidPress() -> Void {




        let ace = DataHandle()



        ace.addOneMovie(self.one)

    }


    override func viewWillAppear(_ animated: Bool) {

        super.viewWillAppear(animated)



//        let urlser = URLServiceabc()


//        urlser.GetRecipes(search: self.xiangqingqing, vc: self) { (data, success) in

//            if !success{

//                return

//            }

//            self.tableData = data as? [Recipe]

//            DispatchQueue.main.async {

//                self.table?.reloadData()

//            }

//        }

//       

    }



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

//        if (tableData?.count) != nil {

//            return (tableData?.count)!

//           

//        }

//        return 0

//    }

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

        return 1;

    }


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


        let id = "cell"

        var cell = tableView.dequeueReusableCell(withIdentifier: id)


        if cell == nil {


            cell =UITableViewCell(style: .subtitle, reuseIdentifier: id)

        }



        cell?.textLabel?.text = self.xiangqingqing;

        cell?.textLabel?.numberOfLines = 0;


        return cell!


    }



    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {


        return SCrwidth;

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()


    }


}


            URLService中

import UIKit

class URLService: NSObject {


   // self.view.backgroundColor = UIColor.white



    //请求搜索的菜谱数据

    func GetRecipes(search:String,vc:UIViewController,completion:@escaping (Any,Bool)->Void)  {

        //使用POST请求数据

        //1 判断无网络情况

        if Reachability.forLocalWiFi().currentReachabilityStatus() == NotReachable &&

            Reachability.forInternetConnection().currentReachabilityStatus() == NotReachable{

            vc.showAlert(msg: "网络错误,请检查网络", sec: 2.5)







            completion("error",false)

            return


        }


        //2  如果有网络  状态栏中的菊花开始转动

        UIApplication.shared.isNetworkActivityIndicatorVisible = true

        //3  网址字符串封装

        let url = URL.init(string: "http://api.jisuapi.com/recipe/search")

        //4  创建请求对象

        var req = URLRequest.init(url: url!, cachePolicy: .reloadIgnoringCacheData, 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:Data?, response:URLResponse?, error:Error?) in


            //停止菊花

            DispatchQueue.main.async {

                UIApplication.shared.isNetworkActivityIndicatorVisible = false

            }





            //如果服务器连接失败  或超时


            if error != nil{

                DispatchQueue.main.async {


                    vc.showAlert(msg: "服务器超时", sec: 2)

                    //刷新表格



                }

                return

            }

            //json解析

            let jsonData = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments)

            if jsonData == nil{

                DispatchQueue.main.async {

                    vc.showAlert(msg: "网络数据错误", sec: 2)

                }

                return

            }

            // 如果正确  将解析的json数据返回给controller

            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)


                }

                return

            }

            //得到json数据中 result字段对应的字典

            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.classid = itemDic.value(forKey: "classid") as? String

                one.content = itemDic.value(forKey: "content") as? String

                modelArr.append(one)


            }


            completion(modelArr,true)


            }.resume()



           }




}


            在Recipe中

import UIKit

class Recipe: NSObject {

    var id:String?

    var classid:String?

    var name:String?

    var content:String?


    var peoplenum:String?


    var preparetime:String?

    var cookingtime:String?

//    var num:Int?

//    var keyword:String?


    var process:String?


    var pcontent:String?



}

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

推荐阅读更多精彩内容