swift学习第五天 项目实战-知乎日报客户端(一)网络交互NSURLConnection

CSDN下载地址:http://download.csdn.net/detail/guchengyunfeng/7989139

这篇文章主要介绍知易客户端开发的网络部分

网络接口

格式:

协议1: http://news-at.zhihu.com/api/3/news/latest (新闻列表)

协议2: http://news-at.zhihu.com/api/3/news/ (新闻详细)

代码实现的主要思路:

协议1

在KDNewsListApi类,并且实现下面的方法

 1 func getNewsData(){
 2
 3         var url:NSURL=NSURL(string:self.url)
 4
 5         var request:NSURLRequest=NSURLRequest(URL:url)
 6
 7         var connection=NSURLConnection(request:request,delegate:delegate,startImmediately:false) //初始化一个connection
 8
 9         println("NewsListUrl is :\(self.url)")
10
11         connection.start(); //通过start方法启动连接
12
13     }

在KDNewsListController类,实现以下接口函数

   func connection(didReceiveResponse: NSURLConnection!,didReceiveResponse response: NSURLResponse!) {

            // Recieved a new request, clear out the data object

            self.data = NSMutableData()

    }

    func connection(connection: NSURLConnection!,didReceiveData data: NSData!) {

            // Append the recieved chunk of data to our data object

            self.data.appendData(data)

    }

    func connectionDidFinishLoading(connection: NSURLConnection!) {

        var err: NSError

        var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(self.data,
            options:NSJSONReadingOptions.MutableContainers,
            error: nil) as NSDictionary

        print("NewsList Json Data:\(jsonResult)")

    }

协议2

在KDNewsDetailApi类,并且实现下面的方法

 1 func getNewsData(){
 2
 3         var url:NSURL=NSURL(string:self.url)
 4
 5         var request:NSURLRequest=NSURLRequest(URL:url)
 6
 7         var connection=NSURLConnection(request:request,delegate:delegate,startImmediately:false)
 8
 9         println("NewsDetailUrl is :\(self.url)")
10
11         connection.start()
12
13     }

初始化一个NSURLConnection类,并且执行start方法

在KDNewsDetailController类,实现以下接口函数

 1  func connection(didReceiveResponse: NSURLConnection!,didReceiveResponse response: NSURLResponse!) {
 2
 3             // Recieved a new request, clear out the data object
 4
 5             self.data = NSMutableData()
 6
 7     }
 8
 9     func connection(connection: NSURLConnection!,didReceiveData data: NSData!) {
10
11             // Append the recieved chunk of data to our data object
12
13             self.data.appendData(data)
14     }
15
16
17     func connectionDidFinishLoading(connection: NSURLConnection!) {
18
19         var err: NSError
20
21         var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(self.data,
22
23             options:NSJSONReadingOptions.MutableContainers,
24
25             error: nil) as NSDictionary
26
27         print("NewsDetail Json Data:\(jsonResult)")
28
29     }

运行的结果如下:

协议1:

{

"date": "20140806",

"stories": [

{

"title": "神经营销学:直接「挖」出你脑中对商品的偏好",

"share_url": "http://daily.zhihu.com/story/4074172",

"ga_prefix": "080612",

"images": [

"http://pic3.zhimg.com/0624f675480562bd281ff106f9023d04.jpg"

],

"type": 0,

"id": 4074172

},

{

"title": "「用灵魂在唱歌」,评委老这么说",

"share_url": "http://daily.zhihu.com/story/4074299",

"ga_prefix": "080610",

"images": [

"http://pic4.zhimg.com/d74d5e3d32a2989a75ea1d3401527f82.jpg"

],

"type": 0,

"id": 4074299

},

{

"title": "科学地告诉你,为什么有些谣言能在网上活得特开心",

"share_url": "http://daily.zhihu.com/story/4074494",

"ga_prefix": "080607",

"images": [

"http://pic2.zhimg.com/790ea039d7ed5f8322f6b8376b8470fe.jpg"

],

"type": 0,

"id": 4074494

},

{

"title": "为什么我们看到的国产电视剧,永远只有那么几种",

"share_url": "http://daily.zhihu.com/story/4073625",

"ga_prefix": "080607",

"images": [

"http://pic1.zhimg.com/046cb040e87fa638fa3ac0c6e155f309.jpg"

],

"type": 0,

"id": 4073625

},

{

"title": "《白发魔女传》:又毁了一个经典武侠人物",

"share_url": "http://daily.zhihu.com/story/4074215",

"ga_prefix": "080607",

"images": [

"http://pic4.zhimg.com/cf9b40897c5928738db76194f5ac8938.jpg"

],

"type": 0,

"id": 4074215

},

{

"title": "瞎扯 · 如何正确地吐槽",

"share_url": "http://daily.zhihu.com/story/4075350",

"ga_prefix": "080606",

"images": [

"http://pic2.zhimg.com/5fad2244a6dba1fd3d474d23f3c22fbc.jpg"

],

"type": 0,

"id": 4075350

}

],

"top_stories": [

{

"title": "「用灵魂在唱歌」,评委老这么说",

"image": "http://pic3.zhimg.com/124b543952f8561ddd8f1a5ac453a404.jpg",

"share_url": "http://daily.zhihu.com/story/4074299",

"ga_prefix": "080610",

"type": 0,

"id": 4074299

},

{

"title": "《白发魔女传》:又毁了一个经典武侠人物",

"image": "http://pic1.zhimg.com/f21531beb0e91e430d914e96b1b13e2c.jpg",

"share_url": "http://daily.zhihu.com/story/4074215",

"ga_prefix": "080607",

"type": 0,

"id": 4074215

},

{

"title": "神经营销学:直接「挖」出你脑中对商品的偏好",

"image": "http://pic4.zhimg.com/a359d6e82270b08941133c56f6ef63d6.jpg",

"share_url": "http://daily.zhihu.com/story/4074172",

"ga_prefix": "080612",

"type": 0,

"id": 4074172

},

{

"title": "科学地告诉你,为什么有些谣言能在网上活得特开心",

"image": "http://pic1.zhimg.com/0ed29854d6e1c632cd0615636375de30.jpg",

"share_url": "http://daily.zhihu.com/story/4074494",

"ga_prefix": "080607",

"type": 0,

"id": 4074494

},

{

"title": "富士康都停工了:昆山这起特大粉尘爆炸是怎么回事?",

"image": "http://pic4.zhimg.com/6d503a17d8477ed68d2c4420d98491f7.jpg",

"share_url": "http://daily.zhihu.com/story/4073525",

"ga_prefix": "080511",

"type": 0,

"id": 4073525

}

]

}

协议2:

{

"body": "<div class=\"main-wrap content-wrap\">\n<div class=\"headline\">\n\n<div class=\"img-place-holder\"></div>\n\n\n</div>\n<div class=\"content-inner\">\n\n\n\n\n<div class=\"question\">\n<h2 class=\"question-title\">如何评价电影《白发魔女传之明月天国》?</h2>\n\n<div class=\"answer\">\n\n<div class=\"meta\">\n<img class=\"avatar\" src=\"http://pic2.zhimg.com/d927c3aef_is.jpg\">\n<span class=\"author\">Xiao Ronnie,</span><span class=\"bio\">Lifetime Researcher</span>\n</div>\n\n<div class=\"content\">\n<p>一般都有个不成文的规矩,「多次延期必是烂片」。这话儿对好莱坞的电影百试百灵,这两年的华语电影,也开始逐一应验。去年有「佳片」名曰富春,反复延期多达四五次创了记录;这部《白发魔女传之明月天国》延期的次数也不遑多让。</p>\r\n<p>「家国恨」、「江湖味」和「儿女情」,这应该是中国经典武侠之中最让人着迷的地方。由林青霞和张国荣主演的那部经典版的《白发魔女》,为了讲一个囫囵的故事,把重点都聚焦在了江湖儿女情之上。当年看的时候,印象最深的当然是林青霞的绝代风华,张国荣的「不辜负」,还有吴镇宇和吕少玲演的雌雄同体的姬无双。但若刨除这些大演员们的个人魅力,于仁泰的那部电影,留下最多的怕是贯穿全片的黑暗色调以及和田惠美精致的美术设计。</p>\r\n<p>所以张之亮要拍这部新作,所图自然不小。女真侵国,权奸当道,忠臣喋血,饿殍遍野,阴谋无间——前面半个钟头的戏,就几乎把整个历史大时代的错综复杂展现出来了。这对导演而言也不是新鲜事,他之前执导的《龙门飞甲》以及《墨攻》,都在描绘时代背景上给足功夫。而且别忘了张之亮的成名作,《中国最后一个太监》;他对于表现动乱时代,很有一番心得。</p>\r\n<p>不论是梁羽生的原作,还是此前的屡次改编,《白发魔女传》的重点都是爱情嘛。所以,一边在交代大历史,一边又必须纠结于小情仇。电影的前半程,你明显能够感觉到叙事节奏快马加鞭未下鞍:武当派、魏忠贤和他净身前的闺女、川陕大军、皇太极、小捕头和孤女、红丸案、廷击案、明月天国、熊廷弼和袁崇焕、抗金大军……还有卓一航和练霓裳之间的情愫发展;故事中所应当囊括的巨大信息量都走马灯式的快速呈现,诸般人物只有一两个镜头,各类明暗线刚提起就收拢。而作为观影者,还没来得及把自己代入戏中,就又开始接收新的剧情,岂是一个「乱」字可言。</p>\r\n<p>但倘若后半部分,能够很好的将前文的铺垫利用好,至少还值得几分期待。但这部命途多舛的作品,最终定档马年七夕,不得不把重心完全向情感倾斜。从练霓裳刹那白发开始,后半部分电影的节奏,彻底 180 度转弯。男女主角的大特写越来越多,煽情的对白和场面也屡屡出现,连配乐的风格都不对了,一直到结尾出现 Low-Fi 版的《红颜白发》,电影开始呈现「七夕定制电影」的风貌。至于前文里的那些家国春秋,那些谋国者说?我们看的是七夕电影,不要在意那些细节。所以观众们看完电影后破口大骂确实有理:这种前紧后松,有头没尾的情况,当然让人生气。</p>\r\n<p>同时,《明月天国》还验证了另一条真理:如果一部电影的男女主角都只有长相,没有演技,绝对是一场灾难。其实范爷的表现至少还能符合通常对于花瓶角色的要求,而且在大部分内心戏里,她眼睛的妆容也弥补了情绪上的不足。至于我们亲爱的「黄教主」,继杨过和韦小宝之后,又一次毁了一个经典的武侠人物。</p>\r\n<p>哪怕是在这部电影里,卓一航至少也有三场足以打动人心的内心戏:一是为了武当存亡而向权奸屈服时的忍辱负重,二是练霓裳转瞬白头时的悲痛欲绝,三是练霓裳为了保全自己而念忘情决时的茫然无奈。而我们的教主,在这三场戏里都近乎用同一种「似笑而哭」的英俊表情,完成了他的情绪表达。而这种「似笑而哭」的表情,大家一点也不陌生,演刘彻时就有,演箫剑时也有,与杨过一般无二,甚至在成冬青身上都出现过。当然,在成冬青那儿,这样的神态在那个土鳖的扮相下显得恰到好处。但尼玛,谁想在卓一航这里看到成冬青的脸啊!</p>\r\n<p>纵观全片,还拿得出一说的对手戏,是将近结尾时,赵文卓和严屹宽关于家国使命的那段对话;但也仅仅是「值得一提」的程度。和当年那部被奉为经典的前作相比,在演员的表现力方面,确实天人有别。甚至连练霓裳让人过目难忘的个性,在影片结束时都显得非常模糊。至于其他方面,二十一世纪一零年代的技术水平,自然比二十年前高上不少。所以虽然 3D 效果备受诟病,但我认为只是观众恨屋及乌罢了。影片的特效水平虽然不能说优秀,但在国内同侪比较,也算中规中矩了。至于影片对于武侠和江湖的理解,以及在美学和设计方面的造诣,真是难望当年之相背了。</p>\r\n<p>这部《明月天国》的失败,和很多武侠经典以及民间传奇在电影改编上的失败有类似之处。举凡华语电影中改编成功的武侠电影,例如《卧虎藏龙》或者《新龙门客栈》,本身就是小故事;而民间传奇中,也只有黄飞鸿系列,狄仁杰系列或者四大名捕系列这样剧情上几乎不用太过连贯,每一集可单独成章的范例才能称得上成功。而包括金古梁的经典作品,还有类似杨家将、隋唐英雄或者七侠五义这样历史背景和内涵丰富、故事连贯、人物众多的原著,在电影改编上都鲜有优秀作品。为数不多被人念叨的,也都是极尽浓缩的《东邪西毒》或者喜剧演绎的《鹿鼎记》系列。在原作丰富的信息量,鲜明的人物个性,戏剧冲突不断的精彩故事以及电影的快速叙事节奏之中如何平衡,这一点在港片的黄金时代也没有很好的解决。但这一类别中,又存在太多可以视为宝库的电影素材,让人难以舍弃。</p>\r\n<p>《明月天国》,不论电影的主线设置和结局,甚至包括影片命名,都像是准备系列化的作品。但从这系列第一部的操作来看,只能又是一个失败的范例。因为中国普通观众对于这类古装武侠或者传奇作品的需求一直存在,只要是有一定完成度的作品,在档期上和宣传上又没有重大错误,商业表现都不会太差。首周末 2.15 亿虽然有七夕档的特殊,但也足见这类影片的市场空间。这足以激励电影创作者们继续在这一领域尝试。</p>\r\n<p>我只是觉得,在一次又一次的尝试和失败后,我们的观众们,总会迎来上乘的武侠 / 传奇改编作品的。</p>\n</div>\n</div>\n\n\n<div class=\"view-more\"><a href=\"http://www.zhihu.com/question/24684647\">查看知乎讨论<span class=\"js-question-holder\"></span></a></div>\n\n</div>\n\n\n</div>\n</div>",

"image_source": "《白发魔女传之明月天国》",

"title": "《白发魔女传》:又毁了一个经典武侠人物",

"image": "http://pic1.zhimg.com/f21531beb0e91e430d914e96b1b13e2c.jpg",

"share_url": "http://daily.zhihu.com/story/4074215",

"js": [],

"ga_prefix": "080607",

"type": 0,

"id": 4074215,

"css": [

"http://news.at.zhihu.com/css/news_qa.auto.css?v=0abbb"

]

}

两个协议测试成功,完成接口部分,下一章节会进行UI部分的开发。

另外写代码的时候swift遇到一点小问题,网上下载了一个项目,后来xcode编辑器里面的语法高亮都变成了灰色,很怪异,估计是命名里面有swift关键字的原因吧(有待研究),把项目关了重启xcode就ok了

希望后续swift版本能尽快解决这个小BUG.

CSDN下载地址:http://download.csdn.net/detail/guchengyunfeng/7989139

时间: 2024-10-20 12:34:15

swift学习第五天 项目实战-知乎日报客户端(一)网络交互NSURLConnection的相关文章

swift学习第五章-字典的使用

//下面是关于字典的 //字典的格式[key:value] //字典可以存放基本类型和对象类型的 //声明一个字典 var dictionary1=["key1":"鸭鸭","key2":"肉包"] var keyValueCount=dictionary1.count//获取这个字典里面键值对的个数 dictionary1["key1"]="鸡鸡"//改变对应健的值 //updateV

Swift学习笔记五:循环和条件语句

一.循环语句 1. for循环 1) for -in 循环,对于数据范围,序列,集合等中的每一个元素,都执行一次 for a in 0...5{}    //循环迭代,从a=0到a=5,执行{}里的代码 注意:a只循环中存在,也就是出了{}a就不存在了 或者遍历数组 let a = [1,2,3] for b in a{} //循环迭代,从b=1到b=3 如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身: for _ in 0...5{}    //循环执行{}里的代码,

学习Android开源项目-根据知乎日报API分析重构一个简单的知乎日报Android客户端

从今天开始准备开始根据之前学习的知乎日报纯净版来实现一个自己的知乎日报客户端. 每次写完的代码都会更新在Github上,每次完成一个既定目标,完成之后当天完成目标的检查并根据错误进行最优化重构. 项目地址:https://github.com/wylhyz/ZhihuDialyPrue

知乎日报客户端应用ios源码

swift开发的知乎日报客户端详细源码,里面分UI和网络两个模块. 1.涉及到了大部分的UI控件的使用(甚至包括UIRefreshView,UITableConrol等等)2.Connection完成网络的交互操作3.json格式的数据解析4.sqlite数据库的各种常用操作5.包含swift开发过程中常用的工具类它能帮助开发者快速的进入到swift的开发中,而不需要慢慢的去学习swift的基本语法,能快速的提高swift的运用能力. <ignore_js_op>   <ignore_j

Android-MVP+Retrofit+Rxjava实现一个知乎日报客户端

使用MVP+Retrofit+Rxjava实现一个知乎日报客户端,界面基于Material design,还没有全部完成orz,,放假太懒 效果图 开源项目 name introduction butterknife Annotate fields with @BindView and a view ID for Butter Knife to find and automatically cast the corresponding view in your layout. MaterialT

android版知乎日报客户端应用源码

如你所见,这是一个知乎日报客户端,我给它起名为:知乎小报,大家可以下载安装体验一下,见附件.IOS版本源码:http://code.662p.com/view/9004.html因为有大把的时间需要在地铁上度过,而我又喜欢知乎日报中的内容,于是就想自己也开发一个知乎日报的客户端,没有让人皱眉的启动页广告,没有应用推荐,没有后台的消息推送,只提供最初的阅读功能.经过了一段时间的开发,最初的设想已经全部完成: 最新新闻.过往的新闻的展示 下拉刷新数据 新闻正文的展示(WebView的各种使用) 正文

swift学习第六天 项目实战-知乎日报客户端(二)界面开发UITableView

现在我们可以将上章节里面从服务器获取的json数据显示到界面上了,这里我们用UITableView来显示. 首先我们自定义一个UITableViewCell,命名为NewsCell,操作步骤如下: 这样会得到下面的文件: 好了,cell制作完之后,我们开始初始化UITableView //tableView tabNewList.delegate=self tabNewList.dataSource=self var nib = UINib(nibName:"NewsCell", bu

java学习之即时通信项目实战

 项目总结:这次项目主要是根据视频来的,结果跟到一半感觉跟不上,慢慢自己有了自己的想法,决定自己先不看学习视频,自己先试着写. 总结写前面,算是写的第一个项目吧.项目中遇到几点问题,首先Scoket对象创建后,服务器端和客户端不能同时创建输入流,否者会引起堵塞. 然后,读入流应该重新创建个线程做等待写入服务,因为读入流会引起当前线程进入阻塞状态.      还有一个用户线程对应一个服务线程,不是多个用户线程对应一个服务线程.      对对象的操作应该由那个对象本身提供操作方法,比如操作UI界面

Swift学习第五枪

方法(methods)和下表脚本(Subscripts) 实例方法(Instance Methods) 类型方法(Type Methods) 下表脚本(Subscripts) 方法是与某些特定类型相关联的函数.类.结构体.枚举都可以定义实例方法:实例方法为给定类型的实例封装了具体的任务与功能.类.结构体.枚举也可以定义类型方法:类型方法与类型本身相关联.类型方法与 Objecti ve-C 中的类方法(class methods)相似. 结构体和枚举能够定义方法是 Swift 与 C/Objec