![基于iOS的手机应用开发城市·微天气(天气预报APP)_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-4/30/3a1a9f1c-9939-4979-8ada-d7990d15fbc8/3a1a9f1c-9939-4979-8ada-d7990d15fbc81.gif)
![基于iOS的手机应用开发城市·微天气(天气预报APP)_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-4/30/3a1a9f1c-9939-4979-8ada-d7990d15fbc8/3a1a9f1c-9939-4979-8ada-d7990d15fbc82.gif)
![基于iOS的手机应用开发城市·微天气(天气预报APP)_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-4/30/3a1a9f1c-9939-4979-8ada-d7990d15fbc8/3a1a9f1c-9939-4979-8ada-d7990d15fbc83.gif)
![基于iOS的手机应用开发城市·微天气(天气预报APP)_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-4/30/3a1a9f1c-9939-4979-8ada-d7990d15fbc8/3a1a9f1c-9939-4979-8ada-d7990d15fbc84.gif)
![基于iOS的手机应用开发城市·微天气(天气预报APP)_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-4/30/3a1a9f1c-9939-4979-8ada-d7990d15fbc8/3a1a9f1c-9939-4979-8ada-d7990d15fbc85.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 题目: 基于iOS的手机应用开发城市·微天气(天气预报APP) 目录摘要1第一章 开发背景介绍21.1 手机操作系统简介21.2 Android和iOS的比较61.3 iOS 7介绍8第二章 城市·微天气的设计92.1 城市·微天气的开发构思92.2 城市·微天气用户体验92.3应用开发中所涉及到的知识点122.4整体系统构架13第三章 城市·微天气的实现143.1 程序主界面框架143.2 MVC程序设计模式143.3 IP定位城市163.4 网络数据的获取193.4.1 JSON数据的解析213.4.2数据的分类223.5 模型数据的赋值
2、253.6 数据总结263.7 背景动态模糊技术293.7.1 动态模糊原理303.7.2 动态模糊图的实现313.8 模型数据的展示363.9 城市列表的应用393.9.1 Pilst文件的应用403.10 界面传值(委托代理的应用)433.11 菜单的应用453.11.1列表的创建453.11.2跳转界面49第四章 本次开发总结51参考文献54第 1 页 共 1页摘要iOS是苹果公司开发的移动终端使用的操作系统,该系统运用在iPhone、iPod touch、iPad、Apple TV等苹果公司的产品上。在国内外苹果的手机和平板电脑产品有着庞大的用户群,随之而来的就是手机和平板电脑应用数量
3、和质量的高需求,从而产生了iOS应用开发的市场需求。此次毕业设计的目的就是了解iOS应用开发的流程、掌握Xcode6开发环境的使用、掌握Object-c语言、理解iOS应用开发中的基本设计模式和编程思想。此次毕业设计在苹果MAC系统下安装的iOS应用开发环境Xcode6中进行开发。我选择设计开发的应用是城市·微天气,也就是天气预报应用。中国人喜欢去旅游,而天气类的APP是必不可少的,在我们的生活中常常会遇到出门旅游的时候碰到一些突如其来的天气情况,比如下雨,太阳紫外线过强,而城市·微天气,集成了,天气提示,IP定位当前城市,预览一周的天气状况,还能查看三小时内的天气情况,可
4、以说是居家旅行必备之APP。该应用还要求有较好的用户体验,UI设计和交互体验必不可少和开发单功能的应用不同的是,由于此类多功能合集应用涉及到多模块多功能,所以可以通过开发实现该应用从而较全面的掌握iOS应用开发中的各个知识点,以及接触到开发中的各种问题,从而解决问题,提高整体的iOS应用开发水平。关键词: iOS 应用 天气 旅行 体验 第 1 页 共 58 页第一章 开发背景介绍1.1 手机操作系统简介这是一个移动智能设备发展的大时代,到目前为止,市面上的智能手机系统已经为数不少了,下面介绍一些市面上常见的手机系统。iOSiOS是由苹果公司开发的移动操作系统 。苹果公司最早于2007年1月9
5、日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。iOS与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS,因为iPad,iPhone,iPod touch都使用iPhone OS,所以2010WWDC大会上宣布改名为iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。框架:iOS使用基于与苹果麦金塔计算器不同的ARM架构的64位或32位中央处理器,使用由PowerVR视频卡渲染的OpenGL ES 3.
6、0以Darwin作为基础。系统架构层次:核心操作系统层(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),触控应用层(the Cocoa Touch layer)。设计特点:iOS用户界面能使用按键、多点触控对设备进行控制。此外透过其内建的加速器,可以令其旋转装置以使屏幕改变方向,这样的设计令设备更便于使用。实体按键:包括屏幕下方的Home按键(用于退出应用程序、回到主界面、长按开启语音控制或Siri,iPhone 5s集成Touch ID传感器),顶部的Power按键(用于锁定屏幕、关机),侧面的音量
7、控制按键。多点触控:包括滑动(Swiping)、轻按(Tapping)、挤压(Pinching)、反向挤压(Reverse Pinching or unpinching),可以与系统互动。屏幕界面:以应用程序方格的形式呈现,最底部的一栏成为Dock,可以有最多四个(iPad系列产品则为6个)程序图标被固定在Dock上,其他可以通过“滑动”的方式进行变换显示的应用程序。状态栏处于屏幕上方,能显示时间、电池电量和讯号强度等信息。从屏幕顶端向下轻扫可以显示通知中心。将图标向下轻扫可以启动Spotlight,从屏幕底端向上轻扫可以显示控制中心。iOS开发者计划:iOS开发者计划(英语:iOS Deve
8、loper Program)是苹果公司为iOS开发人员提供的官方项目,该计划包括为开发人员提供开发工具,技术支持培训,资格及程序发布审核等支持。苹果公司的iOS Dev Center网站亦提供了大量技术和学习资料。此外苹果公司每年都会举办苹果公司全球软件开发者年会。开发者每年拥有两次技术支持事件(TSI),每次允许开发者请求技术支持工程师提供代码级支持。问题将被分配给合适的工程师以帮助排除代码问题,指出获取其他技术资源的途径,或者提供能够加速其开发过程的变通方法或相应的技术文档。开发者可以通过会员中心的“Programs & Add-ons”(计划和附加项目)购买额外的技术支持事件,包
9、括99美元2次技术支持和249美元5次技术支持两种选择。iOS开发工具:iOS软件开发工具包(英文:iOS SDK(Software Development Kit);亦称:iPhone SDK)是由苹果公司开发的为iOS设计的应用程序开发工具包。首个版本于2008年2月发布。软件开发工具包需要在Mac OS X Leopard及以上系统并拥有英特尔处理器才能运行,其他的操作系统,包括微软的Windows操作系统和旧版本的Mac OS X操作系统都不被支持。然而,只有在交付iOS开发者计划的费用后才能发布应用程序。开发人员可以通过应用商店发布任意设价的应用程序,付费应用将让开发人员获得70的费
10、用配额,免费的应用程序没有任何费用配额。2007年10月17日,乔布斯在苹果网站的一封公开信上宣布“软件开发工具包”将会于2008年2月提供给第三方开发商。软件开发工具包于2008年3月6日发布,允许开发者开发iPhone、iPod touch应用程序,并通过“iPhone模拟器”对其进行测试。自从Xcode 3.1发布以后,Xcode就成为了iOS软件开发工具包的开发环境。和Mac OS X的应用程序一样,iOS应用程序使用Objective-C语言,一些应用程序可以写成C或C+语言。苹果通常会发布两个iOS软件开发工具包,包括主要的iOS X.0(例如iOS 6.0)和次要的iOS X.X
11、(例如iOS 6.1)。正式版发布前会有几个测试版公布,目的是测试应用程序的兼容性并增加新的功能。AndroidAndroid是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式
12、,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。2014第一季度Android平台已占所有移动广告流量来源的42.8%,首度超越iOS。但运营收入不及iOS。Windows PhoneWindows Phon
13、e(简称:WP)是微软发布的一款手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。微软公司于2010年10月11日晚上9点30分正式发布了智能手机操作系统Windows Phone,并将其使用接口称为“Modern”接口。2011年2月,“诺基亚”与微软达成全球战略同盟并深度合作共同研发。2011年9月27日,微软发布Windows Phone 7.5。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Window
14、s Phone 7.8。现有Windows Phone 7手机因为内核不同,都将无法升级至Windows Phone 8。 2014年,微软发布Windows Phone 8.1系统;发布时有说到Windows Phone 8.1可以向下兼容,让使用Windows Phone 8手机的用户也可以升级到Windows Phone 8.1。 2014年4月Build2014开发者大会发布Windows Phone8.1。在2014年6月份,Windows Phone8手机部分用户将能收到Windows Phone8.1预览版更新。SymbianSymbian是一个实时性、多任务的纯32位操作系统,
15、具有功耗低、内存占用少等特点,在有限的内存和运存情况下,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、SyncML、以及3G技术。它包含联合的数据库、使用者界面架构和公共工具的参考实现,它的前身是Psion的EPOC。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能很好的适应不同方式输入的平台,也使厂商可以为自己的产品制作更加友好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的symbian系统的主要原因。为这个平台开发的ja
16、va程序在互联网上盛行。用户可以通过安装软件,扩展手机功能。塞班操作系统的前身是英国Psion公司的EPOC操作系统,其理念是设计一个实用的手机操作系统。虽然塞班以EPOC为基础,而它的架构却包含了多任务、多运行绪和存储器保护等功能。 塞班中的节省存储器和清除堆栈能有效地降低资源消耗,该技术也运用于手机内存和存储卡。塞班的编程使用事件驱动,当应用程序没有处理事件时,CPU会被关闭,因此使得塞班系统非常节能。这些技术让塞班的C+开发变得非常复杂。然而,许多塞班设备也支持Python、QT以及J2ME来进行开发。BlackBerry OSBlackBerry OS是Research In Moti
17、on专用的操作系统。BlackBerry OS由Research In Motion为其智能手机产品BlackBerry开发的专用操作系统。这一操作系统具有多任务处理能力,并支持特定的输入装置,如滚轮、轨迹球、触摸板以及触摸屏等。BlackBerry平台最著名的莫过于它处理邮件的能力。该平台通过MIDP1.0以及MIDP 2.0的子集,在与BlackBerry Enterprise Server连接时,以无线的方式激活并与Microsoft Exchange,Lotus Domino或Novell GroupWise同步邮件、任务、日程、备忘录和联系人。该操作系统还支持WAP1.2。2010年
18、末数据显示,BlackBerry操作系统BlackBerry OS在市场占有率上已经超越称霸逾十年的诺基亚,仅次于Google操作系统Android、苹果公司操作系统iOS和微软公司windows phone操作系统,成为全球第四大智慧型手机操作系统。Windows MobileWindows Mobile(简称:WM)是微软针对移动设备而开发的操作系统。该操作系统的设计初衷是尽量接近于桌面版本的Windows,微软按照电脑操作系统的模式来设计WM,以便能使得WM与电脑操作系统一模一样。WM的应用软件以Microsoft Win32 API为基础。新继任者Windows Phone操作系统出现
19、后,Windows Mobile系列正式退出手机系统市场。2010年10月,微软宣布终止对WM的所有技术支持。1.2 Android和iOS的比较尽管市面上的手机系统层出不穷,但是目前能有力占据市场的只有Android、iOS、Windows phone这三个手机系统平台,相比与Android和iOS、WP系统应用开发目前为止并不能超越已经在市场上占有很大份额的安卓和iOS。所以,在这里只比较Android和iOS的开发。就目前来说,如果看收入,基于苹果iOS开发的收入要高,但门槛也略高一点,因为iOS开发比较标准,iOS开发竞争也不必android激烈,但社会上使用苹果手机的人实在是多,而且
20、苹果的应用商店更加规范,这也为苹果开发带去了更高的门槛和回报,同时由于苹果公司对开发者的审核机制比较严格,所以从事苹果开发的企业都必须打造比较严格的产品,才能通过审核并且获得收入,因此从事苹果iOS开发,要更稳健些,同时收入较高。相比苹果iOS开发,android体系则要乱的多,而且android手机从几百元到上万元都有,各种基于android的游戏和应用也成出不穷,android开发就变得比较倡促,容易失败,所以android开发者往往不稳定,收入略低于苹果iOS开发。从市场占有率来看,Android目前还是略胜iOS一筹的;不过,从应用开发者角度来看,Android一直是他们的第二选择。F
21、lurry公布的一组对比数据,表明开发者更倾向于为iOS平台开发应用,“每10个应用中就有7个是iOS应用”。iOS平台“一次开发,随处运行”优势以及Android严重碎片化则是开发者做出以上选择的两个主要原因。“很难想象会有一天,有客户会要求先设计Android应用,再是iPhone。这多半是不可能发生的。”据应用开发和设计公司Fueled的董事Ryan Matzner称,他们公司从来没有客户会要求先设计开发一个Android应用。Fueled每个月要对应上百个客户的需求,也为一些大公司开发过应用,例如Conde Naste, Urban Daddy以及American Express。公司
22、并不缺Android开发人员,但客户们通常都是在已经拥有成功的iOS应用之后,或是需要同时发布Android和iOS两个应用版本时才会联络这些Android开发者。Fueled认为,客户和应用开发者之所以优先选择iOS平台无外乎以下三个原因:1. iPhone用户更愿意在App上花钱。“iPhone用户群似乎更乐意在App上花钱,而且用户在iTunes上可以用信用卡付账,这种点击即可购买的方式让用户获得了更好的购买体验。”2. 每次有新应用,iPhone用户通常都是最先一批使用。“他们的参与度很高,也更容易接受新鲜事物(新应用)。开发者们自然更愿意选择一个有人捧场的平台。”3. Android
23、应用开发需要更多时间和金钱。“花在Android应用开发上的时间是iPhone应用开发时间的1.2倍,成本自然也就更高了。”Matzner称,既然Android应用要耗费更多人力物力,用户数却更少,那还不如去开发iPhone应用。总归一句话,谁也不愿意做吃力不讨好的事。目前来说,选择iOS的应用开发而不是选择Android应用开发的原因在iOS的应用开发者的薪水普遍高于Android的开发者。国内对于iOS应用开发者的需求量很大,目前很多从事传统信息开发的公司纷纷转型移动开发方向,iOS开发将迎来大发展的时代。1.3 iOS 7介绍由于本次毕业设计的应用程序的目标平台是IOS 7 ,所以在此重
24、点介绍一下iOS 7。iOS 7是iOS系统是继iOS 3至iOS 6以来最大一次升级,它采用全新的图标界面设计,总计有上百项改动,其中包括控制中心 、通知中心、多任务处理能力等等。iOS 7是美国苹果公司开发的手机和平板电脑操作系统。2013年6月10日于苹果公司全球软体开发者年会上发布并计划于2013年秋季推出。iOS 7包括重新设计的用户界面及一些对操作系统功能的改进。iOS 7在用户界面上有着与之前版本完全不同的视觉设计,应用程序的图示变得更锐利、平面,也在许多地方iOS 7 设计采用了较为纤细的字体,以往的拟物风格(skeuomorphism)在iOS 7中不再出现。此外,iOS 7
25、的画面采用类3D的效果,在锁定画面及桌面会有3D的效果,但若设备并非使用Retina屏幕(仅iPad 2和iPad mini 1G不使用Retina屏幕),效果可能会不明显。所有的内置程序、解锁画面与通知中心也经过重新设计。此外,iOS 7也新增了控制中心(Control Center)界面,让用户能够快速控制各种系统功能的开关(包括飞行模式、蓝牙、无线网络以及调整屏幕亮度、手电筒、播放或暂停音乐等)。后台多任务处理(Multitasking)功能也经过了强化,已经能够支持每一种应用程序,切换程序时也有了新的用户界面。iOS7系统支持的设备包括iPhone 4、iPhone 4S、iPhone
26、 5、iPhone 5S、iPhone 5C、iPad 2、iPad 3、iPad 4、iPad Air、iPad mini 1G、iPad Mini 2G和iPod Touch 5,其它 iOS 设备并不兼容,用户在升级之前需要提前将iTunes升级至iTunes 11.1,才能够为设备安装iOS 7系统。第二章 城市·微天气的设计2.1 城市·微天气的开发构思天气预报常常是人们生活中常用的工具, 更是旅行人士的必备。可以说出门在外,如果没有准确知道天气情况,很有可能就成了”落汤鸡”。而网络上也有很多很多的天气预报的APP,但是他们的功能都比较单一。作为现代人日常生活必备
27、的工具App,如果能够有一款具有多种功能并且贴近人们生活的App的话,那必定能为人们的生活带来很大的方便。本次毕业设计就是一款基于IOS平台的天气预报APP(城市·微天气)。2.2 城市·微天气用户体验作为一个日常必备的手机App,天气预报的外观必须具有美观、简洁、舒适的特点,能够让用户很容易的就明白App怎样操作和具有什么功能。以下是城市微天气App的截图: 图2-1 软件界面图2-1是App的主界面,界面设计遵循简明美观原则,布局简洁,左下角的大而醒目的数字是当天的气温,数字之上是当天的天气情况,左边则有时间和温差,界面赏心悦目,不会让用户在操作上感到困难。图2-2 软
28、件界面图2-2是App的一周天气预报,一周的天气预报尽在眼底,无论是天气情况,还是天气的温差,尽收眼底,让的出行不再变得困难。详细信息也提示了一天内的情况,包括了风速,风向,湿度,甚至是紫外线强度也可以获知。而最下面的建议的提示温馨的建议年轻群体或者老年群体,应该穿着什么样的衣服。图2-3 城市列表图2-3是App的城市列表。旅行的人最需要的就是这项功能了。列表里面展示了全国的城市列表。通过列表,可以随意的获知哪一个城市的天气情况。非常的贴心和实用。2.3应用开发中所涉及到的技术应用程序开发中所用到的知识点有委托代理、视图界面的添加移除、页面跳转、页面传值、调用web服务器接口、json数据文
29、件的解析等。在这里介绍一下其中最为常见和重要的委托和协议:在IOS开发中协议和委托是两个密不可分的概念(也可以说是不同的设计模式,只不过在这里把他们讲在一起,因为常常都是这么用的):确切来说,协议protocol定义了一种规范,使遵循它的类具备一种能力。委托delegate则是制定了一种"一个类中需要做的事情交给另一个类来完成"的途径,通过委托别的类,来调用协议里的方法,委托也可以说是Object-C中实现多继承的一种方式。委托delegate:在apple提供的IOS SDK里可以看到很多的delegate,比如常用的UITableView,因为没有源码,就没有办法知道U
30、ITableView里的所谓的 。cell是如何增加,删除,复用的。但开发者面对的开发要求使开发者必须具备能够操作这些cell的能力,针对这种情况,各种Delegate就显得非常重要。协议protocol:一个完整协议定义如下:protocol 协议名声明方法end其中"声明方法"可以用required和optional关键字修饰:required 表示用到这个协议的时候必须实现这个协议的方法optional 表示可选择性实现这些方法。一个类需要遵循的协议在接口声明中的< >填写即可。2.4整体系统构架用户 IP定位城市选择 数据获取 显示界面 图2-4 整体构
31、架城市·微天气APP的整体构架如图2-4所示,天气预报首先是通过用户的上网IP地址定位用户的地理位置。定位的IP会直接返回城市。那么用户第一眼见到的界面就是当前定位的城市,定位成功后,软件会根据城市到指定的数据接口地址,对数据进行调用。调用回来的数据,进行显示在用户的界面上面。当用户需要其他的城市信息的时候通过城市列表信息,可以快速的查看到全国大部分的城市。非常的容易轻松。在整个项目中,多次用到了列表(tableview)视图,列表在IOS和安卓系统中处在比较重要的地位。因为用户的手机尺寸有限,想要显示更多的内容,只有列表才能完成。所以学习好列表的相关知识,就相当于学习了整个系统的一
32、半。这个项目运用到列表的地方可以是全方面的。包括界面,城市列表,菜单等。都运用到列表。可以说列表的运用无处不在。第三章 城市·微天气的实现3.1 程序主界面框架每个应用都会有一个主界面,或者说是首界面。iOS应用开发中,程序的界面有三种方式可以展示出来,第一种是纯代码编写,通过代码的形式将需要展现的内容添加显示到视图页面上;第二种是通过xib布局文件,将需要显示的控件、背景色等通过拖拉、修改属性等可视化手段编辑界面;第三种是使用storyboard故事版,storyboard类似xib,不同的是storyboard更像是xib的集合,在storyboard中,可视化的视图界面将不会再
33、是单独的一个,而是在一个storyboard中可以存在任意个视图界面,各个界面可以采用可视化开发的手段有效的关联起来。纯代码编写界面会很灵活,是界面可动态变化必不可少的;使用xib布局文件能够更快的将一些控件等界面相关的视图显示到视图界面;而使用storyboard可以让整个应用界面之间的关联更加清晰明了。在城市微天气的这个APP中,采用了storyboard和XIB的两种界面模式。3.2 MVC程序设计模式模型-视图-控制器(Model-View-Controller,MVC)是Xerox PARC在20世纪80年代为编程语言Smalltalk80发明的一种软件设计模式,至今已广泛应用于用户
34、交互应用程序中。在iOS开发中MVC的机制被使用的淋漓尽致,充分理解iOS的MVC模式,有助于程序的组织合理性。1.M(model)模型2.V(view)视图3.C(controller)控制器图3-1 MVC的相互关系一对象(model)模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算。例如,模型对象可能是表示游戏中的角色或地址簿中的联系人。用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象。模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象。二视图对象(view)视图对象是应用程序中用户可
35、以看见的对象。视图对象知道如何将自己绘制出来,并可能对用户的操作作出响应。视图对象的主要目的,就是显示来自应用程序模型对象的数据,并使该数据可被编辑。尽管如此,在 MVC 应用程序中,视图对象通常与模型对象分离。在iOS应用程序开发中,所有的控件、窗口等都继承自 UIView,对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现。三:控制器(Controller)在应用程序的一个或多个视图对象和一个或多个模型对象之间,控制器对象充当媒介。控制器对象因此是同步管道程序,通过它,视图对象了解模型对象的更改
36、,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期。控制器对象解释在视图对象中进行的用户操作,并将新的或更改过的数据传达给模型对象。模型对象更改时,一个控制器对象会将新的模型数据传达给视图对象,以便视图对象可以显示它。对于不同的UIView,有相应的UIViewController,对应MVC中的C。例如在iOS上常用的UITableView,它所对应的Controller就是UITableViewController。Model和View永远不能相互通信,只能通过Controller传递。Controller可以直接与Model对话(读写调用Model),Mo
37、del通过Notification和KVO机制与Controller间接通信。Controller可以直接与View对话,通过outlet,直接操作View,outlet直接对应到View中的控件,View通过action向Controller报告事件的发生。Controller是View的直接数据源(数据很可能是Controller从Model中取得并经过加工了)。Controller是View的代理(delegate),以同步View与Controller。3.3 IP定位城市1、 什么是IP网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的
38、所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。另外,IP还有进入防护,知识产权,指针寄存器等含义。2、 什么是IP地址IP地址就好像电话号码(地址码):有了某人的电话号码,你就能与他通话了。同样,有了某台主机的IP地址,你就能与这台主机通信了。按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示,每个IP地址长32
39、bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是一串很长的数字,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。有人会以为,一台计算机只能有一个IP地址,这种观点是错误的。我们可以指定一台计算机具有多个IP地址,因此在访问互联网时,不要以为一个IP地址就是一台计算机;另外,通过特定的技术,也可以使多台服务器共用一个IP地址,这些服务器在用户看起来就像一台主机似的。3、 IP地址的作用每
40、一台上网的电脑,都要有自己的身份证,有了身份证才能在网络上遨游,那这个身份证是什么,就是IP地址。每台电脑都会有一个IP地址,这个地址是电信运营商提供上网服务的一个接口,这个接口包含了我们的地址信息。比如我们在A城市上网,那么电信运营商就会提供一个当地的IP地址,这个IP就包含了A城市的信息。通过查询IP地址软件就可以知道用户在哪个城市上网了。4、 IP地址查询的端口网络上很多IP查询的端口,本程序运用的查询端口是::88/?app=ip.get&ip=&appkey=12031&sign=b84740c97e42d707771542e480de0b54&for
41、mat=json,这个网址是新浪提供的IP查询的端口,其中“ip=”这个字符串后面为空,代表着直接调取本机IP地址。如果用户有需要查询的IP地址,即可在“ip=”的后面填上相应的IP地址了。5、 传输什么样的数据IP查询的端口返回的是Json的数据。数据可以通过IOS自带的类解析成字典或者数组。下面是IP地址调用的函数:-(id)IPWithWebNSString*url=":88/?app=ip.get&ip=&appkey=12031&sign=b84740c97e42d707771542e480de0b54&format=json"st
42、ringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding; NSError *error; /加载一个NSURL对象 NSURLRequest *request = NSURLRequest requestWithURL:NSURL URLWithString:url; /将请求的url数据放到NSData对象中 NSData *response = NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil; /IOS5自带解析类N
43、SJSONSerialization从response中解析出数据放到字典中 NSDictionary *ip=NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error; NSString *ip_path = ip objectForKey:"result" objectForKey:"ip" return ip_path;通过解析IP地址软件把带有IP关键字的KEY解析成字符串,函数就可以返回这个字符串。这个字
44、符串就是城市的相关信息。3.4 网络数据的获取数据在一个APP中永远处于一个非常重要的位置,因为一款优秀的APP都离不开数据的支持,如果一个APP连数据都不需要,那他是失败的。在网上搜遍了天气预报的接口,很多普遍的结果是”中国天气网”的一个JSON 接口,但是经分析”中国天气网”的APP接口已经取消掉了数据也是好久之前。在一家网站上找到了的数据源“聚合数据”。城市微天气这个项目采用了”聚合数据”的数据源。聚合数据把需要的数据都存放在网络端,而APP 只需要调用他们的端口就可以得到需要的数据了。数据采用了MVC的结构设计,把它做成一个数据模型,控制器只需要调用模型里面的函数,就能得到数据源。而模
45、型也可以用于其他的控制器当中。非常实用。下面讲解:图3-2 数据模型文件 图3-2中展示的是的数据模型。把模型放在了Data文件夹里面,方便识别和查找. 下面这个是调用网络端口的函数。+(id)WebURL NSString* ip_web=Ip_Addre allocIPWithWeb; /调用了一个获取IP定位的函数NSString*path ="/天气预报的接口NSString*api_id="key=f1f047d9f54638e6f4c013dd8ea4f35f"/天气预报的个人密钥NSString *dtype="&dtype=jso
46、n"/传输类型:xml 或 JSONNSString *cityip=ip_web; /城市ip,这个函数是通过IP定位来获取天气预报数据NSString *format="&format=2" /传输形式1:不带数组 2:带数组 if (cityip=nil) cityip="171.108.237.202"/特殊判断:在IP定位端口失败的时候,使用默认的IP地址,防止程序报错。 NSLog("网络错误:现在显示默认IP地址。"); NSString*strUrl=NSStringstringWithFormat:
47、"%" ,path,api_id,dtype,"&ip=",cityip,format;/把所有的字符串拼接成接口地址。 NSString*url=NSStringstringWithString:strUrlstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding; / 把接口地址转成UTF8 模式 return url;上面的一段代码是如何调用一个接口数据。既然数据的接口可以调用了。那么是不是要把数据下载下来并转换成数据?答案是肯定的。获取的数据是JSON的格式,是一种普遍的
48、网路数据模式,他的前身是XML格式,但是XML格式的数据比较注重美观,所以数据包比较大,而的网络流量却是有限的,减少数据修饰增加数据的实用性,JSON数据格式就由此发展而来。3.4.1 JSON数据的解析 Json作为一个轻量级的数据交换格式,他正在逐步的替代XML的数据格式,这个小节里面将用天气预报来解析JSON数据。+(id)JsonWithData:(NSString *)url NSError *error; /加载一个NSURL对象 NSURLRequest*request=NSURLRequestrequestWithURL:NSURL URLWithString:url; /将请
49、求的url数据放到NSData对象中 NSData*response=NSURLConnectionsendSynchronousRequest:request returningResponse:nil error:nil; /IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中 NSDictionary*weatherDic=NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error; NSDictionar
50、y*weatherInfo=weatherDic objectForKey:"result" return weatherInfo;在上面的一个简短的函数中,Json数据就可以轻松的被解析出来了,那么他是怎么解析的呢?首先,对于json来说自从IOS5后面的版本,就已经自带解析JSON数据的函数了。通过调用下面这个函数NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error;网络端的数据就会转成一个Nsdata类的数据。通过字典里面的
51、方法,就可以轻松的把JOSN数据转成的字典数据了。用法是相当的。3.4.2数据的分类图3-3 软件界面图3-2里面的数据。可以看到,里面的数据包含了温度城市,时间,温差,还有作者信息等。那么这些这些数据都是直接调用端口的数据。但是端口的数据都是一连串的。也就是说,端口数据是经过分类,但是需要提取出相关数据来展示的。那么怎么来提取这些相关的数据源呢,那就进行对JSON数据的一个分析。JSON数据: "resultcode": "200", "reason": "successed!", "result&qu
52、ot;: "sk": "temp": "10", "wind_direction": "西风", "wind_strength": "2级", "humidity": "79%", "time": "23:00" , "today": "temperature": "1016", "weather"
53、: "多云转小雨", "weather_id": "fa": "01", "fb": "07" , "wind": "北风微风", "week": "星期二", "city": "贵港", "date_y": "2015年02月03日", "dressing_index": "较冷&quo
54、t;, "uv_index": "最弱", "comfort_index": "", "wash_index": "不宜", "travel_index": "", "exercise_index": "较不宜", "drying_index": "" JSON数据里面包含多个”KEY”,这些KEY的后面跟着就是需要的数据了。通过IOS的函数库,可以轻松的提
55、取到其中的对应的关键字的内容。只要把相应的内容放到界面上就可以了。+(id)webinfo:(NSString *)URL NSDictionary* webinfo= WebData JsonWithData:URL; /调用函数获取数据字典 NSString*city=webinfo objectForKey:"today"objectForKey:"city"/在字典中提取出”city”这个KET的数据 NSString*temp=webinfo objectForKey:"sk"objectForKey:"temp&
56、quot; NSString*time=webinfo objectForKey:"today"objectForKey:"date_y" NSString*weather=webinfo objectForKey:"today"objectForKey:"weather" NSString*weather_icon=webinfo objectForKey:"today"objectForKey:"weather_id"objectForKey:"fa"
57、 NSString*temperature=webinfo objectForKey:"today"objectForKey:"temperature"上面的一小段截取代码说明了是怎么在字典中提取出数据,并赋值给模型数据,在MVC模式中,控制器只需要对模型数据进行调取,就可以控制界面显示什么样的数据了。模型的数值初始化是一个很关键的步骤。如果没有了模型数据的赋值,控制器就无法拿取数据。3.5 模型数据的赋值在通过Json数据解析之后,还得需要将模型的属性赋值,如果不给模型数据赋值,当控制器调用数据模型的时候,发现全是”NULL”空的,那么上面写的代码也没有用,所以必须还要进行一个步骤:模型数据的赋值。首先必须要在.h文件上声明模型属性:property(nonatomic,copy)NSString *D_City;property(nonatomic,co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国氯氰菊酯乳油数据监测研究报告
- 2025至2030年中国幼儿家具数据监测研究报告
- 2025至2030年接地线隔离器项目投资价值分析报告
- 2025年中国高频线路板市场调查研究报告
- 2025至2030年万用钩项目投资价值分析报告
- 2025年红外线吊式焗油机项目可行性研究报告
- 2025年制动空压机项目可行性研究报告
- 2025至2030年色浆涂料项目投资价值分析报告
- 2025至2030年平板蓝玻璃项目投资价值分析报告
- 二零二五年度男方赌博离婚协议正规范本附子女教育保障条款
- 2019版新人教版高中英语必修+选择性必修共7册词汇表汇总(带音标)
- 初中八年级音乐-劳动号子《军民大生产》
- 中层领导的高绩效管理
- 小小银行家-儿童银行知识、理财知识培训
- 机械基础知识竞赛题库附答案(100题)
- 2022年上学期八年级期末考试数学试卷
- 阅读理解特训卷-英语四年级上册译林版三起含答案
- 国库集中支付培训班资料-国库集中支付制度及业务操作教学课件
- 屋面及防水工程施工(第二版)PPT完整全套教学课件
- 2023年上海青浦区区管企业统一招考聘用笔试题库含答案解析
- 2023年高一物理期末考试卷(人教版)
评论
0/150
提交评论