zoukankan      html  css  js  c++  java
  • IMDb Search

    主要是一个搜索电影,显示电影信息的小程序,开发坏境是xcode7.0,swift2.0

    创建HTTP请求连接并对连接格式化
    了解NSURLSession类的使用方法
    通过NSURLSession类的dataTaskWithURL:方法获取远程数据库中的影片数据
    配置App Transport Security(应用程序传输安全协议)
    将返回的JSON数据格式化成Dictionar 类型的对象
     
    第一部分是界面的搭建,需要注意的是,在开发的时候,可以preview你的视图(进行对自动布局结果的调整)
     
    第二部分是进行网络的请求与数据的展示
    关于网络请求的代码:

    func searchIMDBWithContent(content : String){

            //在这里需要将传进来的字符串进行格式化(将空格用%20代替)

            //        let nospaceString = content.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

            

            let nospaceString = content.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet(charactersInString:"`#%^{}"[]|\<> ").invertedSet)

            

            let urlPath = NSURL(string: "http://www.omdbapi.com/?t=(nospaceString!)")

            let session = NSURLSession.sharedSession()

            let task = session.dataTaskWithURL(urlPath!) {

                data, response, error ->  Void in

                if (error != nil){

                    print(error?.localizedDescription)

                }

                //解析可能会出现错误,因此需要使用try来进行处理

                do{

                    let jsonResult = try //在类方法之前加try

                        NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)as! Dictionary <String , String>

                    //需要在主线程线程来执行控件显示的代码

                    

                    if let apiDelegate = self.delegate{

                        dispatch_async(dispatch_get_main_queue()){

                            self.delegate?.didfinshIMDbSearch(jsonResult)

                            

                        }

                    }

                    

                }catch{

                    print("格式化数据失败")

                }

                

                

                

            }

            task.resume()//这一步是必须的

            

        }

    在网络请求的时候,需要注意是在iOS9中,程序的“应用程序传输安全协议”默认是开的,我们需要对它进行配置,程序才能进行网络的访问

    有关于配置的方法,在这里

    第三部分是程序结构的划分(MVC)
    将有关于网络请求的代码放到了IMDbAPIController中,使用了代理来进行模型层与控制器之间进行交互。
     
     
     
    第四部分是界面的虚化:
    界面虚化的主要代码是

    func blurBackgroundUsingImage(image: UIImage){

        let frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)

            

            let imageView = UIImageView(frame: frame)

            imageView.image = image

            imageView.contentMode = .ScaleAspectFill

            

            let blurEffect = UIBlurEffect(style: .Light)

            let blurEffectView = UIVisualEffectView(effect: blurEffect)

            blurEffectView.frame = frame

            

            let transparentWhiteView = UIView(frame: frame)

            transparentWhiteView.backgroundColor = UIColor(white: 1.0, alpha: 0.30)

            

            let views:Array = [imageView,blurEffectView,transparentWhiteView]

            

            for index in 0 ..< views.count{

                if let _ = self.view.viewWithTag(index+1){

                let oldView = self.view.viewWithTag(index+1)

                    oldView?.removeFromSuperview()

                }

                

                let viewToIsert = views[index]

                self.view.insertSubview(viewToIsert, atIndex: index+1)

                viewToIsert.tag = index+1

            }

            

        }

    其实就是创建3个视图添加上去。

    第五部分是对界面的美化工作(新版本出了一点小问题,以前版本的一个函数用不了了,虽然不影响最终结果的显示)
    详细的慢慢添加,洗澡吃饭了,,,,,草,,,,,
  • 相关阅读:
    原来 是 需要的,
    传说中的 拉伸,
    date + 排序,
    两个 header,
    招财铃,负责模块,
    一个字母,
    一个词,
    vue+webpack静态资源路径引用
    Webstorm 的 Tab 键调整缩进值
    ES6常用语法
  • 原文地址:https://www.cnblogs.com/mudy/p/swift.html
Copyright © 2011-2022 走看看