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个视图添加上去。

 

第五部分是对界面的美化工作(新版本出了一点小问题,以前版本的一个函数用不了了,虽然不影响最终结果的显示)
详细的慢慢添加,洗澡吃饭了,,,,,草,,,,,
posted @ 2015-09-26 15:27  脱贫致富,多喝热水  阅读(249)  评论(0编辑  收藏  举报