主要是一个搜索电影,显示电影信息的小程序,开发坏境是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. VMM服务模板(虚机、APP)部署排错

    I won't focus this blog on how to create a service template but more on how you can track the change ...

  2. 寻ta分析与站点内容

    从 寻ta 突然来的訪问量就開始在想.站点内容是否才是真正须要的东西. 寻ta分析 作为一篇文章带来的影响,我们能够看看訪问会话. 日期 訪问量 5.5 9 5.6 4618 5.7 1216 5.8 ...

  3. Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships set区间分解

    D. One-Dimensional Battle ShipsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/co ...

  4. Parallax Mapping Shader 凸凹感【转】

    原文 http://www.azure.com.cn/default.asp?cat=11&page=2 Parallax Mapping 就是通过高度图中的高度,对纹理坐标进行偏移,来视觉上 ...

  5. delphi 数组类型

    数组类型 数组类型定义了一组指定类型的元素序列,在方括号中填入下标值就可访问数组中的元素.定义数组时,方括号也用来指定可能的下标值.例如,下面的代码中定义了一个有 24 个整数的数组:type     ...

  6. zoj3672 Gao The Sequence

    原地踏步了半年,感觉一切都陌生了~ 题意:a[i]-一个任意的数,这个数要等于a[1]~a[i-1]每个数减去任意一个数,经过多次这样的变换到达目标b序列,能到达就yes不能到达距no. 一开始各种分 ...

  7. RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)

    RapeLay(电车之狼R)的结局介绍 (隐藏结局) 必备知识要让MM怀孕非常easy.起初刚进入调教模式后.仅仅要H一次 MM就開始有时期状态. 生理(连上有红晕) ->不详状态(闭目第一次) ...

  8. SlideLayout

    https://github.com/rey5137/SlideLayout

  9. Line Search and Quasi-Newton Methods

    Gradient Descent 机器学习中很多模型的参数估计都要用到优化算法,梯度下降是其中最简单也用得最多的优化算法之一.梯度下降(Gradient Descent)[3]也被称之为最快梯度(St ...

  10. 基于ActiveMQ的统一日志服务

    概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 ...