首页 > 数据库技术 > 详细

IMDb Search

时间:2015-09-26 15:52:46      阅读:293      评论:0      收藏:0      [点我收藏+]

主要是一个搜索电影,显示电影信息的小程序,开发坏境是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个视图添加上去。

 

第五部分是对界面的美化工作(新版本出了一点小问题,以前版本的一个函数用不了了,虽然不影响最终结果的显示)
详细的慢慢添加,洗澡吃饭了,,,,,草,,,,,

IMDb Search

原文:http://www.cnblogs.com/mudy/p/swift.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!