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

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 =http://www.mamicode.com/ 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 =http://www.mamicode.com/ NSMutableData() 6  7     } 8  9     func connection(connection: NSURLConnection!,didReceiveData data: NSData!) {10 11             // Append the recieved chunk of data to our data object12 13             self.data.appendData(data)14     }15 16     17     func connectionDidFinishLoading(connection: NSURLConnection!) {18 19         var err: NSError20 21         var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(self.data,22 23             options:NSJSONReadingOptions.MutableContainers,24 25             error: nil) as NSDictionary26 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://www.mamicode.com/"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.mamicode.com/"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 

 

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