1、摘 要 风起云涌的高科技时代,智能终端的普及不仅推动了移动互联网的发展,也带来了移动APP应用的爆炸式增长。凭借便携、触屏、高清的丰富体验,以iphone和android为代表的手机移动设备正悄然改变着企业的运行方式。传统的pc端,人们只能靠浏览器打开网页,在网站上购物,网站上信息量庞大繁杂,不容易找到自己想要的商品。而移动端购物客户端的出现,可以帮助人们快速找到自己想要的商品,并快捷安全地完成支付功能。论文简单介绍了系统的相关知识及涉及技术,详细地介绍了“创意生活馆手机应用系统开发”课题开发的整个过程,包括需求分析、总体设计、模块划分及实现过程等方面的内容,最后对各个功能模块的操作及其界面进
2、行描述。本系统开发的应用设计是基于Xcode5.0的ios项目,使用了多个第三方库,使用了多种设计模式,像MVC开发模式,KVC、KVO设计模式。本系统具有操作简便、通俗易懂、便携、容易使用等大容量的特点,非常适合现代生活和移动互联网的发展。关键词:Xcode5.0 创意生活 MVCAbstractThe burgeoning high-tech era, the popularity of intelligent terminal not only promoted the development of the mobile Internet, also brought the explos
3、ion of mobile APP. With portable and rich experience of touch screen, high definition, represented by the iphone and android mobile devices are changing the operation mode of the enterprise. Traditional PC, people can only be opened by the browser page, shopping on the website, website information i
4、n large and complex, it is not easy to find the goods you want. And mobile terminal shopping client, can help people quickly find goods they want, and fast and safely complete payment functions.Paper introduces the related knowledge and technology involved in the system, detailed introduces the crea
5、tive life hall mobile application system development the whole process of project development, including requirements analysis, overall design, module partition, and the content of the implementation process, etc, finally to the operation of the various functional modules and its interface is descri
6、bed.The system design is based on the development of application Xcode5.0 ios project, USES more than one third party libraries, using the MVC development pattern, observer pattern development. This system has simple operation, easy to understand, portable, easy to use, such as the characteristics o
7、f large capacity, very suitable for modern life and the development of mobile Internet.Keywords: Xcode5.0, Creative Life, MVC目 录1 绪论11.1 课题开发背景11.2 系统开发的意义11.3 本系统预达到的目标11.4 章节介绍22 理论技术基础32.1 理论基础32.2 技术基础42.3 iOS系统架构52.3.1 核心操作系统层52.3.2 核心服务层52.3.3 应用程序框架62.3.4 Unix内核62.3.5 开发环境配置63 系统分析与设计73.1 需求分
8、析73.2 系统需求分析73.3 可行性分析73.3.1技术条件可行性83.3.2硬件条件可行性93.3.3社会因素可行性93.3.4市场因素可行性103.4总体设计103.5详细设计124 系统实现154.1 代码结构的实现154.2 各模块代码的实现154.3 各模块功能的实现185 总结21致谢22参考文献23附录241 绪论近几年随着苹果手机的热卖,智能手机终端越来越普及;结合3G网络的大力发展,移动互联的时代已经正式到来。此次把生活创意馆系统搬到iOS手机操作系统上,是对移动开发的一次简单尝试。寄希望于此次尝试能够熟悉iOS移动平台的开发,综合自己所学知识,运用到这个项目中来,同时期
9、待自己有所突破和创新,最后能够积累一定的移动开发经验。此次我把这些知识和信息在iOS手机平台上展示出来,在如今智能机逐渐普及的基础上将会是一个新的空间。 1.1 课题开发背景风起云涌的高科技时代,智能终端的普及不仅推动了移动互联网的发展,也带来了移 动APP应用的爆炸式增长。凭借便携、触屏、高清的丰富体验,以iphone和android为代 表的手机移动设备正悄然改变着企业的运行方式。 近年来,移动购物市场已具有一定的规模而且还将继续扩大,伴随消费者移动设备使 用目的的转变,不再只局限于看视频、刷微博、看电子书、听音乐等形式,移动购物开 始挑战传统购物和PC购物模式,成为各大电商力捧的新盈利点
10、。 今年5月1日当天,天猫无线端成交额增达到53.8%,首次超过PC端成交额。而5月2 日-5月3日,天猫无线日均支付宝成交占天猫总成交比也达到49.8%,追平PC端成交量。 这说明人们的线上生活正在从pc端逐渐转向移动端,这是移动互联网带来的巨大机遇。 移动app的数量增长也在于移动设备的便捷,操作方便,界面简单亲切。在每一个垂直领域内,app能够快速帮助人们实现想要做的事情,资讯,社交聊天,订票,当然少不了购物。传统的pc端,人们只能靠浏览器打开网页,在网站上购物,网站上信息量庞大繁杂,不容易找到自己想要的商品。而移动端购物客户端的出现,可以帮助人们快速找到自己想要的商品,并快捷安全地完成
11、支付功能。1.2 系统开发的意义 这个系统可以实现在iphone终端上的创意商品的浏览,还可按类别搜索创意生活用品,用户可根据自己的需要来浏览选择商品。能够获得最新的最流行的创意商品,让生活紧跟时代的前沿,让生活变得更加人性化,让让生活变得更简单,让丰富多彩的生活不再是有钱人的专属。PC端的笨重,移动端的方便快捷,随时随地的浏览商品,收藏上商品,购买商品,支付商品。1.3 本系统预达到的目标该系统旨为用户展示一些生活上具有创意的小商品,通过主页推荐,筛选,分类,搜索,以不同的方式最大程度地为用户展示用户需要的商品。用户能够获得最新的最流行的创意商品,让生活紧跟时代的前沿,让生活变得更加人性化,
12、让生活变得更简单,让生活更加丰富多彩。最终,用户可以在本系统完成商品的购买。 1.4 章节介绍第一章,介绍了课题的开发背景、课题开发的现实意义。 第二章,概略地介绍了开发此系统用到的各种技术理论基础,ios系统构架,程序框架等。第三章,对该的系统结构设计、系统结构功能、运行环境等概要分析设计阶段做工了大体介绍即需求分析。第四章,对系统总体流程设计和功能设计作了简要说明,具体介绍了系统各功能实现过程。第五章,总结。2 理论技术基础2.1 理论基础软件开发中理论基础包括认知科学中关于概念模式的概念与方法;数据库技术的理论与方法;编译技术的有关方法;关于人机界面的理论与方法;管理科学中关于项目管理与
13、版本管理的理论与方法;系统科学与系统工程中的有关理论与方法,当然还有面向对象的开发方法。概念模式是认知科学中的一个用语,指的是人信在认识事物过程中,对于某一事物或某一系统形成的抽象的、一般化的框架。概念模式在认识过程中十分重要,同时作为交流与表达工具也是十分重要的,人们在互相配合、互相协调、共同完成某项任务的时候,需要统一认识、协同行动,就必须用某种公认的方式来进行表述,概念模式正是起了这种作用。概念模式的实现方式包括:框图:把程序基本步骤分为处理、判断、输入输出、起始或终止等几个功能,并能不同的记号加以表示,用箭头表示控制或执行的顺序。 结构图:它的基本图例为模块,以模块的调用关系为线索,用
14、连线表示调用关系,并注明传递参数。基本调用方式有:顺序调用、选择调用、循环调用。 数据流程图( DFD ):面对的是系统的信息流程,把信息流看作一个组织或系统运作的线索,简明扼要地勾画出全局,基本元素是外部实体,以箭头表示信息在它们之间的流动状况。实体关系图:用于描述静态数据结构的概念模式,以实体、关系、属性三个基本概念概括数据的基本结构。数据字典( DD ):描述数据内容的概念模式,用表格的形式列出数据数据的基本属性及相互关系。时序网络:描述系统状态及转换方式,常用于实时控制方面的软件。数学与逻辑模型:描述客观世界的状态与规律,包括常用的决策树与决策表。计算机模拟模型:利用计算机大量、高速处
15、理信息的能力,在计算机内设置一定的环境,以程序来实现客观系统中某些规律或规则,在二者的基础上计算机高速运行,以便观察客观系统的运行。 信息库是一个包罗万象的,随着开发项目进展而不断修改与补充的信息集合。数据库是在文件系统基础上发展起来的一种管理技术,重点在于合理地组织数据,减少冗余;数据仓库是为了使数据更接近实用,对数据进行多次加工或提炼,得出许多派生或综合的数据。区别与特点:它在规模上不一定像数据仓库那么大,分析提炼的要求也与数据仓库不同,但数据结构复杂,不断变化,分析的要求也不同,还需要保持一致性,需要供分析人员、程序员、用户、维护售货员等多种人员使用。 人机界面交互原则:输入尽量自然,输
16、出必须准确;界面必须始终一致;界面必须使用户随时掌握任务的进展善;界面必须提供帮助;宁可让程序多做,不可让用户多干。重要性:对于用户来说,界面就是系统本身。因为用户只关心能否有效地使用软件来解决问题,用户对软件功能的理解都在界面上表现出来,用户的输入是否自然、简便,是否有充分的提示和帮助,对用户的错误是否有友好的措施,输出的形式是否易于理解,结果是否正确,都是用户关心的问题,也是界面的特点,界面不友好的软件就不是成功的软件。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法
17、就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的集合。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。2.2 技术基础此应用用到的技术主要包括两方
18、面:OC语言和Xcode开发环境。OC语言是一门面向对象的开发语言,它是一门非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反,ObjC写成的程序通常不会比其原始码大很多。而其函式库也和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUs
19、tep),Apple在其Mac OS X 10.3中仍未引入这个功能。另一个问题是ObjC不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有“NS”作为前缀,例如NSObject或NSButton来清楚分辨它们属于Mac OS X核心;使用“NS”是由于这些类别的名称在NeXTSTEP开发时定下。虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。和C+不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。
20、亦与C+不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。Xcode是苹果公司在Mac OS X下的集成开发环境(IDE)引擎。它负责处理从最开始到工程的最终部署这一过程中的大多数细节。您可以通过这个工具来完成如下工作:(1)创建和管理工程,包括指定目标的需求、依赖性、和连编的风格。(2)在具有语法染色、自动缩进等功能的编辑器上编写源代码。(3)在工程的不同组件中进行漫游和检索,包括头文件和文档。(4)连编工程在图形化的源代码级调试器
21、上调试工程。Xcode可以连编由C、C+、Objective-C、Objective-C+、和Java编写的源代码组成的工程,可以生成Mac OS X支持的所有类型的执行代码,包括命令行工具、框架、插件、内核扩展、程序包、和应用程序。Xcode允许您对连编和调试工具、可执行文件的打包方式(包括信息属性列表和本地化程序包)、连编过程(包括拷贝文件、脚本文件处理、和其它连编阶段)、以及用户界面(包括分立和多视图的代码编辑器)进行几乎无限的定制;还支持几个源代码管理系统(其中有CVS和Perforce),使您可以将文件追加到代码库、提交修改、获取更新版本、以及进行版本的比较。Xcode和另外一个主要
22、的开发工具Interface Builder良好地集成在一起。在Interface Builder中,您可以定义一个类(包括超类,插座变量,和动作),并为工程中的每个类生成源代码文件的框架。在Xcode中,您可以为定制类添加插座变量和动作,然后让Interface Builder将这些实体导入到nib文件中。2.3 iOS系统架构 iOS是运行于iPhone、iPod touch以及iPad设备的操作系统,它管理设备硬件并为手机本地应用程序的实现提供基础技术。iPhone SDK包含开发、安装及行本地应用程序所需的工具和接口。本地应用程序使用iOS系统框架Objective-C语言进行构建,并
23、且直接运行于iOS 设备。iOS架构和Mac OS的基础架构相似。站在高级层次来看,iOS 扮演底层硬件和应用程序(显示在屏幕上的应用程序)的中介,应用程序不能直接访问硬件,而需要和系统接口进行交互,这样可以防止应用程序改变底层硬件。iOS系统框架分为四大层,CocCocoa Touch 层、Media层、Core Service层、Core OS层,底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的服务和技术。 2.3.1 核心操作系统层 System级包含kernel环境、驱动以及操作系统级别的unix接口。kernel本身负责操作系统的每一个方面:如虚拟内存管理、线程、文件系统、网
24、络和互联通信。在该层的驱动也提供在可获得的硬件与系统框架之间的接口。为了安全,对kernel和驱动的存取被限制到一组有限的系统框架和应用。2.3.2 核心服务层CoreServices包含应用需要的基础的系统服务。这些服务中的核心是CoreFoundation和Foundation框架,定义了所有应用使用的基本类型。该层也包含独立的技术来支持一些其它功能, 例如位置、iCloud、社交媒体和网络。Net Servicer主要负责网络服务,在开发过程中,承担应用程序与服务器之间连接的角色,有很强的交互性。媒体层包含图形技术、音频技术和视频技术,这些技术相互结合就可为移动设备带来最好的多媒体体验,
25、更重要的是,它们让创建外观音效俱佳的应用程序变得更加容易。您可以使用iOS的高级框架更快速地创建高级的图形和动画,也可以通过底层框架访问必要的工具,从而以某种特定的方式完成某种任务。它包括以下这些组件:Multi-Touch Events,Core Motion,Camera,View Hierarchy,Localization,Alerts,Web Views,Image Picker,Multi-Touch Controls。CocoaTouch层包含创建iOS应用程序所需的关键框架。上至实现应用程序可视界面,下至与高级系统服务交互,都需要该层技术提供底层基础。在开发应用程序的时候,尽可
26、能不要使用更底层的框架,尽可能使用该层的框架。2.3.3 应用程序框架编写应用程序项目,都是从Cocoa Touch层开始的,具体来说是从UIKit Framework开始的。iOS常用的SDK框架如下:AddressBook.framework提供访问存储核心数据库中用户联系人信息的功能。AddressBook.framework提供一个用户界面,用于显示存储在地址薄中的联系人详情。AudioUnit.framework提供一个接口,让我们的应用程序可以对音频进行处理。AudioToolbox.framework和AVFoundation.framework提供音频录制和回放的底层API,同
27、时也负责管理音频硬件。CFNetwork.framework访问和配置网络,像HTTP,FTP和Bonjour Services等。CoreFoundation.framework提供抽象的常用数据类型,如Unicode、strings、XML、URL等。CoreGraphics.framework提供2D绘制的基于C的API。Foundation.framework提供Object-C的基础类(像NSObject)、基本数据类型和操作系统服务等。GameKit.framework为游戏提供网络功能,点对点互联和游戏中的语音交流。MapKit.framework为应用程序提供内嵌地图的接口。M
28、ediaPlayer.framework提供视频播放和音频的功能。MessageUI.framework提供视图控制接口用以处理E-mail和短信。OpenGLES.framework提供简洁而高效的绘制2D和3D图形的OpenGL API。QuartzCore.framework提供动画特效以及通过硬件进行渲染的能力。StoreKit.framework为应用程序提供在程序运行中消费的支持。SystemConfiguration.framework检测当前网络是否可用和硬件设备状态的能力。2.3.4 Unix内核iOS系统同mac系统都是是以Darwin为基础的,是在有Unix衍生出来的BS
29、D基础上开发出来适合在移动设备上运行的系统。2.3.5 开发环境配置需要装有Mac操作系统的Mac本一台,有条件的可以配一部苹果手机。Xcode 5.0,是ios开发唯一的工具,Xcode内集成大量框架,功能强大,方便易用。3 系统分析与设计3.1 需求分析该部分主要介绍各种需求分析,主要包括:技术条件可行性描述,硬件可行性描述,社会因素可行性描述,市场因素可行性描述等。具体描述内容如下。3.2 系统需求分析本系统是基于iOS平台开发的一款创意生活馆系统,将要应用在iOS移动通讯设备上,能够尽可能的满足用户更方便更快捷的需求,能够在在任何地方浏览商品,选择商品,购买商品,不受地点的限制。创意生
30、活馆手机应用客户端总体的架构图如图3-1所示。创意生活馆搜索分类我首页人气价格销量搜索内容一级分类二级分类申请用户注册用户图3-1总体架构图 3.3 可行性分析可行性分析主要分析该系统的实现可行性,主要包括技术条件可行性,硬件条件可行性,社会因素可行性,市场因素可行性。3.3.1技术条件可行性说到技术,首先也是最重要的就是开发语言,IOS应用客户端开发使用的是Objective-C语言,它是一门面向对象的语言,高效而优雅。相对于其他面向对象语言它主要有以下几种特性:1.动态绑定函数和消息的最根本不同是:函数和它的参数是在编译的时候已经确定下来,但是消息和接收对象知道程序已经在运行,消息在传递时
31、才能确定下来。确切的消息方法实现依赖于消息的接收者,不同的接收者可能有相同的方法名不同的方法实现,只有在消息接收时才能确定(动态类型),通过源代码的类型定义并不能完全确认接收者的类型。运行时消息例程查找接收者和消息方法,找到消息方法实现的机器码,呼叫这个方法,传递给它消息实例变量指针。2.类别Objective-C 的标准的类声明,使用interface 关键字。但类别与类声明区别的是在括号中声明了一个类别名字。类别能为任何类添加类别,包括不知道源代码的类(例如标准的Cocoa Touch 类等)。已声明类别的类,类及其子类的所有实例都可以使用声明在类别中的方法,在运行时,通过类别为类添加的方
32、法与类本身的方法没有任何区别。类别也通常在头文件中进行声明,在分离的源文件中进行类别方法的实现。为了使用为类添加的类别,需要在使用的地方输入声明类别的头文件。类别可以作为一种设计模式使用,用来使用类别把一个实现复杂的类分离为几个实现文件。也可以为不同的平台提供不同的类别实现方法。类别用来声明实例方法或类方法,但不适合声明额外的属性。在一个类别接口中声明一个属性是有效的,但在类别中声明一个额外的实例变量是不可能的,这意味者编译器不能够生成任何实例变量,也不能够生成任何属性存取方法。但你能够在类别实现中实现自己的属性存取方法,但你不能够保持和跟踪一个属性值,除非它已经在原先的类中存储。另外需要注意
33、的是类别中定义的方法名字不能与该类已有的方法或为该类(或其超类)定义的其它类别中的方法冲突。3.协议在Objective-C中,每个类都都对外提供自己的接口,类包括接口声明和类实现。而没有像其它语言(如java)那样,接口与类定义是独立的,一个类可以实现多个接口。但在Objective-C中协议可以起到类似的作用,协议用来声明与任何特定的类独立的方法,如果一个类声明符合某种协议,则其实现中必须实现协议中声明的方法,但与其它语言接口定义不同的是在协议中不仅能声明对象方法,还能声明类方法以及属性。 4.继承性与C+不同的是,OC中继承只能是单继承,不存在多继承,这为开发者省去了复杂的继承模式。要实
34、现多继承的效果,可以使用类别。继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。在Objective-c中所有的类都是继承NSObject的,因为NSObject有一些基本的方法。类的继承关系图3-2所示:NSObjectUIResponderUIScreenUIWindowUIViewUILabelUIScrowViewUI
35、TextViewUITableView图3-2类的继承关系图5.开发工具:xcode 5.0。6.操作系统:mac 10.8操作系统。3.3.2硬件条件可行性硬件方面只需要一台装有mac系统的mac本即可。有条件的可以配一部Apple移动设备。3.3.3社会因素可行性如今社会发展迅速,人们对应用的要求越来越高,移动购物市场已具有一定的规模而且还将继续扩大,伴随消费者移动设备使 用目的的转变,不再只局限于看视频、刷微博、看电子书、听音乐等形式,移动购物开始挑战传统购物和PC购物模式,成为各大电商力捧的新盈利点。 今年5月1日当天,天猫无线端成交额增达到53.8%,首次超过PC端成交额。而5月2
36、日-5月3日,天猫无线日均支付宝成交占天猫总成交比也达到49.8%,追平PC端成交量。这说明人们的线上生活正在从pc端逐渐转向移动端,这是移动互联网带来的巨大机遇。 移动app的数量增长也在于移动设备的便捷,操作方便,界面简单亲切。在每一个垂直领域内,app能够快速帮助人们实现想要做的事情,资讯,社交聊天,订票,当然少不了购物。传统的pc端,人们只能靠浏览器打开网页,在网站上购物,网站上信息量庞大繁杂,不容易找到自己想要的商品。而移动端购物客户端的出现,可以帮助人们快速找到自己想要的商品,并快捷安全地完成支付功能。3.3.4市场因素可行性近几年随着苹果手机的热卖,智能手机终端越来越普及;结合3
37、G网络的大力发展,移动互联的时代已经正式到来。此次把生活创意馆系统搬到iOS手机操作系统上,是对移动开发的一次简单尝试。寄希望于此次尝试能够熟悉iOS移动平台的开发,综合自己所学知识,运用到这个项目中来,同时期待自己有所突破和创新,最后能够积累一定的移动开发经验。此次我把这些知识和信息在iOS手机平台上展示出来,在如今智能机逐渐普及的基础上将会是一个新的空间。3.4总体设计此应用主要由四个大模块组成,首先最底层的是一个自定义的UITabBarController,它管理了4个UINavigationController,每一个导航控制器又管理了自己的子视图控制器.子视图控制器中又有自己的自视图
38、控制器,且相互之间可以跳转。另外该系统是遵循mvc模式,使用新出的ARC内存管理方式。控制器连接视图和数据模型,处理主要逻辑,例如,请求服务器取得数据,解析存到数据模型里,并将数据模型传给视图,视图只处理跟自己显示有关的具体逻辑。该系统的体系结构如图3-3所示。ShoppingCarViewControllerParentViewControllerHomePageViewControllerSearchViewController 控制器CategoryViewControllerIViewControllerUITableview视图UIWebView ClassificationMode
39、l模型 HomePageModel图3-3体系结构图3.5详细设计1.主页模块流程图,此界面主要显示推荐的一些创意商品,列表主要显示商品的基本信息,选择每个商品可以进入对应商品详情界面。首页 选择某商品商品详情购物图3-4首页流程图2.分类模块流程图,此模块分为一级分类和二级分类, 一级分类 选择分类 二级类别商品详情图3.5专题流程图3. 搜索模块流程图,点击搜索导航,进入搜索界面,显示一个搜索条,支持关键字搜索,但不支持模糊搜索。输入关键字,显示出相应的要搜索的内容。如图3-6所示搜索条 输入搜索内容商品列表 图3-6 搜索模块流程图4.我模块主要是登陆自己的账户,在账户在线的情况下实现购
40、物,其流程如图3-7所示。选择注册登录 我 注册注册成功并登录检查是否 注册处 登录注册成功并登录检查用户名与密码是否一致 否 否 是 是 图3-7我流程图4 系统实现4.1 代码结构的实现该系统主要由四个基本界面组成,代码结构如下:本系统采用MVC设计模式,M是model,建立的数据模型;V是View,是每个model所对应View来显示内容;C是Controller,controller是视图的控制器。系统在实现时用到的这四个方面主要内容如下:1、模型Model:ClassifictionNodeModelHomePageModel2、视图View:ClassCellResultCellM
41、enuClassifyCellHomePageCell3、控制器Controller:RootViewControllerSubjectViewControllerCategoryViewContrpollerSearchControllerIViewControllerParentViewController4、第三方库:Hash:用于加密数据的第三方库。Fmdb:数据库第三方库。EGOTableViewPullRefresh:下拉刷新的第三方库。AS3DpuuRefresh:下拉刷新的第三方库。ASIHttpRequest:网络请求数据的第三方库。SDWebImage:网络解析图片的第三方
42、库。4.2 各模块代码的实现1. 主页模块:此界面主要向用户展示推荐的生活创意产品,首先向后台服务器请求数据,http请求方式为get请求方式。请求成功后,服务器返回json数据,解析之后显示在页面上,同时将数据存本地数据库。用到的技术点有:网络请求使用ASI库,解析json数据使用SBJson,显示数据使用UITableView,存数据库使用FMDB。主要代码如下: interface HomepageViewController () DetailListTableView *_tableView; /头置UIView UIView *_headerView; / NSArray *ima
43、gesNormal; / NSArray *imagesSelect;endimplementation HomepageViewController- (void)viewDidLoad super viewDidLoad; self.navigationTitle = 创意生活; self setNavigationBarRightButtonWithTitleName:筛选 target:self action:selector(chooseClicked); imagesNormal = NSArray alloc initWithObjects:btn_价格_点击前.png,btn_
44、销量_点击前.png,btn_人气_点击前.png,nil; imagesSelect = NSArray alloc initWithObjects:btn_价格_点击后.png,btn_销量_点击后.png,btn_人气_点击后.png,nil; self createHeaderView; self createTableView; HttpRequest requestWithUrlSting:HomePageUrlString target:self aciton:selector(requestFinished:);2. 分类模块:此页面主要根据各个分类显示商品信息,包括两级分类。数据模型主要由一个二维数组实现,同样数据从后台服务器取得。主要代码如下:interface SearchViewController () ResultListTableView * _tableView; UIView * _searchView; UITextField * _searchTextField;endimplementation SearchViewController- (void)viewDidLoad super viewDidLoad;self.navigationTitle = 搜索;