主要是一个搜索电影,显示电影信息的小程序,开发坏境是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的更多相关文章

  1. Ranking relevance in yahoo search (2016)论文阅读

    文章链接 https://www.kdd.org/kdd2016/papers/files/adf0361-yinA.pdf abstract 点击特征在长尾query上的稀疏性问题 基础相关性三大技 ...

  2. IMDB电影排行爬取分析

    一.打开IMDB电影T250排行可以看见250条电影数据,电影名,评分等数据都可以看见 按F12进入开发者模式,找到这些数据对应的HTML网页结构,如下所示 可以看见里面有链接,点击链接可以进入电影详 ...

  3. [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

    二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...

  4. Leetcode 笔记 99 - Recover Binary Search Tree

    题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped ...

  5. Leetcode 笔记 98 - Validate Binary Search Tree

    题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binar ...

  6. 基于WebGL 的3D呈现A* Search Algorithm

    http://www.hightopo.com/demo/astar/astar.html 最近搞个游戏遇到最短路径的常规游戏问题,一时起兴基于HT for Web写了个A*算法的WebGL 3D呈现 ...

  7. Leetcode: Convert sorted list to binary search tree (No. 109)

    Sept. 22, 2015 学一道算法题, 经常回顾一下. 第二次重温, 决定增加一些图片, 帮助自己记忆. 在网上找他人的资料, 不如自己动手. 把从底向上树的算法搞通俗一些. 先做一个例子: 9 ...

  8. [LeetCode] Closest Binary Search Tree Value II 最近的二分搜索树的值之二

    Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...

  9. [LeetCode] Closest Binary Search Tree Value 最近的二分搜索树的值

    Given a non-empty binary search tree and a target value, find the value in the BST that is closest t ...

随机推荐

  1. ADO.NET 快速入门(七):使用数据库事务

    数据库事务用于控制数据提交到数据库.例如,在标准的账户程序,账户的借贷必须同时完成.由于电脑偶尔发生故障(电力中断.网络中断,等等),可能有些记录被更新或者添加,但是另外一些没有.为了避免这些情况,可 ...

  2. 汇编语言(学习笔记-----[bx]和loop)

    1.[bx]是什么??     和[0]有些类似,[0]表示内存单元,它的偏移地址是0      [bx]同样也表示一个内存单元,它的偏移地址在bx中,mov ax,[bx]  (字)   mov  ...

  3. SQL Server活动监视器

    打开SQL Server活动监视器:

  4. Hadoop对小文件的解决方式

    小文件指的是那些size比HDFS的block size(默认64M)小的多的文件.不论什么一个文件,文件夹和block,在HDFS中都会被表示为一个object存储在namenode的内存中, 每一 ...

  5. Excel设置数据有效性实现单元格下拉菜单的3种方法(转)

    http://blog.csdn.net/cdefu/article/details/4129136 一.直接输入: 1.选择要设置的单元格,譬如A1单元格: 2.选择菜单栏的“数据”→“有效性”→出 ...

  6. Codeforces Gym 100513F F. Ilya Muromets 线段树

    F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...

  7. delphi ExecWB

    TWebBrowser.ExecWB 关键点 procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload; 实现过程 ...

  8. DOS命令生成文件列表

    DOS命令窗口,生成文件列表命令格式:dir xmlFiles /b >list.txt dir 文件列表相关命令 xmlFiles 待生成文件所在文件夹,在dos命令窗口根目录下,省略前缀.别 ...

  9. MySQL · 特性分析 · MDL 实现分析

    http://mysql.taobao.org/monthly/2015/11/04/ 前言 在MySQL中,DDL是不属于事务范畴的,如果事务和DDL并行执行,操作相关联的表的话,会出现各种意想不到 ...

  10. Innode引擎监控的开启的方法

    查看当前InnoDB引擎信息 mysql> show innodb status\G 开启InnoDB监控,有四种: 1. innodb_monitor mysql> create tab ...