时间:2014-10-21 13:39 文章来源:http://www.lunwenbuluo.com 作者:王艳君 点击次数:
2 系统模块设计
程序的整体功能模块包含从服务器请求和解析数据、功能选择、提交数据到服务器等。其中,使用同步请求方式进行数据请求,XML解析使用的是GDataXML解析,字符串解析使用的是SBJson解析。具体的模块设计如图1所示。
3 界面的绘制
界面绘制较为简单,只需根据当前需求分析对每个页面进行绘制。首先在工程中创建一个视图控制器,并为其生成nib文件,然后将绘制界面所用到的控件拖入合适位置,形成插座控件,等待网络请求完毕时加载数据在这些控件上。若没有生成nib文件,则可以使用代码手动创建实现控件的生成。绘制流程图如图2所示。
4 控件的选择
UILabel用来显示文字,可以设置字体、字号、颜色等。
UIImageView用来显示图片,可以设置图片大小、位置等。
UITextView用来显示多行文本内容,该控件可以对文本内容进行编辑,若文本内容超出文本框范围则可以上下滚动浏览。
UIButton在iPhone上主要就是按钮,可以响应用户操作事件,它可以设置背景图片、文字等相关属性。
UITableView是一个一维的表视图,是上下滑动的条目清单,可进行分区,每个分区展示不同类型的数据,每个表格里的指定行(cell)中的数据由他所在分区(section)和所在分区的行(row)来决定。
UIScrollView是一个滚动视图控件,当视图中无法显示多于一个屏幕尺寸的内容时可以使用该控件, contentsize属性可以设置滚轴内容的宽高。
5 数据的请求
数据请求总共有四种,分别是同步请求、异步请求、Get请求、Post请求。其中同步请求一旦发生,应用程序会停止与用户进行交互,等待数据返回完成,才可以进行之后的操作。异步请求解决了同步请求中线程阻塞的问题,当发生异步请求之后,程序会建立新的线程进行操作,对于用户交互丝毫不会受到影响,用户依然可以对所有界面元素进行操作。Get请求虽然操作简单,但安全性不高,它的请求参数都显示在访问路径上,外界可以直观的看到。Post请求操作相对复杂,不过安全性较高,它是将所有的请求参数放在一个body里面,从而使外界不容易捕获到这些信息。
同步Get请求虽然阻塞线程并且安全性不高但操作简单,可以在列表展示模块使用同步Get请求,可以大大减少工作量,缩短程序开发周期。在数据下载模块则需要使用异步Get请求,可以实现多线程下载,不会阻塞线程,在下载的同时可以进行用户交互。
(1) 同步Get请求的建立需要以下三个步骤:
第一步,创建URL,代码如下:
NSURL*url=[NSURLURLWithString:@"http://cmhtech.ecartoon.net/tuijian.php/book_index.php?id=2"];
第二步,通过URL创建网络请求,代码如下:
NSURLRequest*request=[[NSURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
第三步,连接服务器,代码如下:
NSData*received=[NSURLConnectionsendSynchronousRequest:requestreturningResponse:nil error:nil];
NSString*str=[[NSStringalloc]initWithData:receivedencoding:NSUTF8StringEncoding];
(2) 异步Get请求的建立需要以下三个步骤:
第一步,创建URL,代码如下:
NSURL*url=[NSURLURLWithString:@"http://cmhtech.ecartoon.net/tuijian.php/book_index.php?id=2"];
第二步,通过URL创建网络请求,代码如下:
NSURLRequest*request=[[NSURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
第三步,连接服务器,代码如下:
NSURLConnection*connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
异步请求需要实现的代理方法如下:
① 接收到服务器回应的时候调用
-(void)connection: (NSURLConnection*) connectiondidReceiveResponse: (NSURLResponse *) response {}
② 服务器传输数据时调用,此方法执行若干次。
-(void)connection: (NSURLConnection *) connection didReceiveData: (NSData*) data {}
联系方式
随机阅读
热门排行