第8章 IOS客户端模块实现 倚动实验室.

Slides:



Advertisements
Similar presentations
Lua+wax在ios上的应用 白 衣.
Advertisements

Excel VBA视频教程 课程介绍-什么是VBA
基于工作过程的网页设计与网站开发教程 英语等级考试专题学习网站发布测试 主编:张洪斌 刘万辉 机械工业出版社.
Objective C介紹與MVC.
项目四 组建跨地区网络 授课教师:肖颖.
图表的创建.
資料儲存.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第1章 导论 倚动实验室.
移动开发的灵便迭代之道 黄凯.
第9章 App提交 倚动实验室.
《IOS应用开发教程》 QQ学习群:
《IOS应用开发教程》 QQ学习群:
Chapter 14 iPhone 平台簡介.
SVN的基本概念 柳峰
第二讲 搭建Java Web开发环境 主讲人:孙娜
李杰 首都经济贸易大学 安全与环境工程学院 个人主页:
大学计算机基础 典型案例之一 构建FPT服务器.
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
Segue.
IPHONE应用开发 资源管理项目组 2018年12月24日.
PostgreSQL 8.3 安装要点 四川大学计算机学院 段 磊
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
Hub Web System 主要功能: 1.查询库存(Query Current Storage) 2.创建PL(Create PL) 3.查询、打印PL单(Query & Print PL) 4.查询允交量、在途量 5.修改用户的基本信息(Update Password) 6.查询GR(Query.
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
感測器.
任务1-3 使用Dreamweaver创建ASP网页
SOA – Experiment 2: Query Classification Web Service
《IOS应用开发基础教程》 QQ学习群:
Navigation Controller和 Table View
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第四章 团队音乐会序幕: 团队协作平台的快速创建
DQMClientDim.cxx及双光子练习
VisComposer 2019/4/17.
主要内容: 无线局域网的定义 无线传输介质 无线传输的技术 WLAN的架构 无线网络搭建与配置 无线网络加密配置
《IOS应用开发教程》 QQ学习群:
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
Objective C練習.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
项目二:HTML语言基础.
本节内容 Win32 API中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
Chapter 18 使用GRASP的对象设计示例.
2019/5/10 网络学习空间实务操作.
Visual Basic程序设计 第13章 访问数据库
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
A Simple iOS Application
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
IOS界面制作一二事 一个IOS初学者的心得分享 蒋瞿风.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
实验六静态路由.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
多个Activity的使用 本讲大纲: 1、使用Bundle在Activity之间交换数据 2、调用另一个Activity并返回结果
Presentation transcript:

第8章 IOS客户端模块实现 倚动实验室

CONTENTS 目录 8.1 App框架的搭建 8.2 我的高考模块实现 8.3 录取线查询模块实现 8.4 推荐学校模块实现

在对我们“豹考通”进行了详细的流程和模块设计之后,我们就可以开始编码,实现我们想要实现的功能了。这里我们仅仅对App框架搭建、我的高考、分数线查询和推荐学校几个模块进行详细讲解。 在开始编码之前,我们需要思考使用什么框架去搭建应用,根据对市面上大多数应用的分析以及对“豹考通”的需求分析来看,我们还是使用UITabbarController和UINavigationController去搭建框架,管理视图。 8.1.1创建项目工程及文件 步骤一:创建项目

新建项目时所需要填写的相关信息含义如下: ·Product Name:这是应用的名称,最好能具有代表意义,能够简单说明应用的内容,做到顾名思义。 ·Organization Name:机构名称,这个名称会出现在项目每个.h和.m文件中,是用户的一个代号。比如笔者使用的是“Christopher”,那么在.h和.m文件中,就会出现如下字样,说明创建日期和版权归属。 Created by Christopher on 5/5/14. Copyright (c) 2014 Christopher. All rights reserved. ·Organization Identifier:这个是公司标识符,也是用户最需要重视的一个信息,它直接关系到应用最后发布的情况。填写的格式是公司的反域名,即com.companyname。笔者再提一下应用发布,如果应用完成之后,想发布到App Store中,如果填写的公司标识符与新建工程时填写的公司标识符不一致,那么上传就会失败。所以需要读者特别重视。

·Bundle Identifier:Bundle包标识符,它不需要用户自己输入,而是由Company Idenfier加上项目名称组成,前面提到的应用发布时就是需要匹配Bundle Identifier。因为它和Company Identifier有直接的关系,这个部分非常重要。 ·Language:选择用于开发的语言,这里提供了两种IOS开发语言供用户选择,分别是Objective-C和Swift。这里我们选择Objective-C进行开发,Swift是Apple公司最新开发的一门编程语言,它的编码形式更加简单,也更人性化,有兴趣的读者可以自己学习并使用Swift语言进行IOS的开发。 ·Devices:开发设备,就是你的应用面向iPhone开发还是iPad开发,或者二者都是,那么需要用户在这里选择。默认的是iPhone。 ·Use Core Data:Core Data是IOS开发中的一种数据管理机制,这里我们不需要勾选。

步骤二:分别创建三个模块的文件夹,并创建根视图 在XCode中新建文件夹

8.1.2创建根视图控制器以及3个模块视图控制器 步骤一:创建UIView实例 步骤二:创建3模块实例,并置于根视图控制器中 1. #import <UIKit/UIKit.h> 2. @interface BaseViewController : UITabBarController 3. { 4. UIView *_tabbarView; 5. } 6. @end 步骤二:创建3模块实例,并置于根视图控制器中

8.1.3在根视图Tabbar栏中创建3个模块视图 步骤一:设置模块在Tabbar中的位置 1. - (void)_initTabBar 2. { 3. _tabbarView = [[UIView alloc]initWithFrame:CGRectMake(0, ScreenHeight - 49, 320, 49)]; 4. [self.view addSubview:_tabbarView]; 5. _tabbarView.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0.0 alpha:0.3]; 6. for (int i = 0;i < 3;i++){ 7. UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 8. button.frame = CGRectMake( i*100 + 10, (49 - 45)/2, 100, 45); 9. button.tag = i; 10. [button addTarget:self action:@selector(selectTab:) forControlEvents:UIControlEventTouchUpInside]; 11. [_tabbarView addSubview:button]; 12. } 13. }

8.1.4在AppDelegate文件中设置根视图 步骤二:添加Tabbar单击事件 1. - (void)selectTab:(UIButton *)button 2. { 3. self.selectedIndex = button.tag; 4. } 8.1.4在AppDelegate文件中设置根视图 1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2. { 3. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 4. // Override point for customization after application launch. 5. self.window.backgroundColor = [UIColor whiteColor]; 6. [self.window makeKeyAndVisible]; 7. baseViewCtrl = [[BaseViewController alloc] init]; 8. self.window.rootViewController = baseViewCtrl; 9. [baseViewCtrl release]; 10. return YES; 11. }

应用框架界面 我的高考模块运行效果

8.2我的高考模块实现 8.2.1在AppDelegate文件中设置根视图 8.2.2创建各信息填写控制器 步骤一:创建UITableView实例 1. #import <UIKit/UIKit.h> 2. @interface myScoreViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> 3. @property (nonatomic, retain)UITableView *tableView; 4. @end 步骤二:创建UILabel实例 8.2.2创建各信息填写控制器 步骤一:创建子控制器 步骤二:声明信息填写相关协议,实现界面传值 步骤三:实现其他子视图控制器的传值

全国省市plist文件存储 一个plist文件包括3个部分,Key、Type和Value,这里的Key都为State,Type可以是Dictionary(字典)和NSArray(数组),Value为全国各省份地区。

8.2.3 UIAlertView协议实现 高考成绩输入框

8.2.4 在基视图中显示用户填写信息 NSUserDefaults读取用户选择的信息的方法如下代码所示。 1. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 2. NSString *subjectString = [defaults objectForKey:@"subject"]; 3. subjectLabel.text = subjectString; 我的高考模块界面

8.2.5 广告栏设置 最后需要完成的就是广告栏的设置。根据需求我们了解到,当用户生源地选择“江西”时,广告显示的内容和其他的生源地不一样,那么我们在视图显示时,首先要判断用户的生源地信息,如果是“江西”则显示第一种广告;如果不是“江西”就显示第二种广告。 我的高考模块(非江西广告)界面 我的高考模块(广告)界面

8.3录取线查询模块实现 在录取线查询模块中,我们通过“省控线查询”功能讲解如何使用服务器端接口,并通过使用JSon来解析网络数据。 当用户点击“省控线查询”单元格cell时,会弹出省份的子视图。因为省份信息是固定的,我们可以把它们存放到plist配置文件中,当需要用到时直接调用即可。我们这里采用就是配置文件的方法。plist配置文件采用的是key-value方式。 8.3.1实现选择省市地区功能 读取出plist文件的值将它赋给provinceArray。读取plist文件的方法非常简单,只需指定一个路径,包括文件名和类型(plist),NSBundle mainBundle是用于获取本地路径。 1. NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"area" ofType:@"plist"]; 2. proviceArray = [[NSArray alloc]initWithContentsOfFile:plistPath]; 3. cell.textLabel.text = [[proviceArray objectAtIndex:indexPath.row]valueForKey:@"State"];

8.3.2实现省份选择、分数线查询与界面跳转 步骤一:在.h文件中创建各实例 1. @property (nonatomic, retain)NSMutableArray *data; //存储网络数据 2. @property (nonatomic, assign)int provinceIndex; //省份索引值 3. @property (nonatomic, copy)NSString *yearString; //年份 4. @property (nonatomic, assign)int catagory; //科类 5. @property (nonatomic, assign)int batch; //批次 6. @property (nonatomic, retain)UITableView *tableView; //表视图 7. @property (nonatomic, retain)NSArray *yearArray; //年份数组 8. @property (nonatomic, retain)NSArray *cataArray; //科类数组 9. @property (nonatomic, retain)NSArray *batchArray; //批次数组 10. @property (nonatomic, retain)UILabel *yearLabel; //年份标签 11. @property (nonatomic, retain)UILabel *catagoryLabel; //科类标签 12. @property (nonatomic, retain)UILabel *batchLabel; //批次标签 13. @property (nonatomic, retain)UILabel *areaLabel; //生源地标签 14. @property (nonatomic, retain)UILabel *lineLabel; //分数线标签

步骤二:添加网络库 我们需要访问网络接口,通过HTTP协议读取请求网络数据。那么在请求网络数据之前,我们需要添加一些框架和一些第三方库。 因为要使用HTTP协议,我们需要导入第三方库ASIHTTPRequest,它是一款功能十分强劲的HTTP访问开源项目。 下载地址:https://github.com//pokeb/asi-http-request. 把下载好的文件导入到XCode项目中,然后添加5个库文件: ·CFNetwork ·systemConfiguration ·MoblieCoreServices ·libz ·libxml2

步骤三:对查询省控线界面进行布局 步骤四:添加选择省份跳转功能 1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 2. { 3. LineViewController *line = [[LineViewController alloc]init]; 4. line.provinceIndex = indexPath.row; 5. line.title = [[proviceArray objectAtIndex:indexPath.row]valueForKey:@"State"]; 6. [self.navigationController pushViewController:line animated:YES]; 7. [line release]; 8. } 这里需要注意line.provinceIndex = indexPath.row;这行代码,因为查询省控线需要访问接口,那么就要用到相关的参数,省份索引值就是参数之一。需要的参数在编写代码之前服务器端开发人员会把接口发送给客户端开发人员。还通过line.title = [[proviceArray objectAtIndex:indexPath.row]valueForKey:@"State"];把每行的省市值传给了子视图,作为它的标题。

8.3.3网络接口读取(远程服务器) 1. NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.10LAB.cn/zhushou/getControlLinesJson.action?c=%ld&y=%@&s=%ld&b=%ld",(long)_catagory,_yearString,(long)province,(long)_batch]]; 2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 3. [request setRequestMethod:@"GET"]; 4. [request startSynchronous]; 5. NSData *netData = request.responseData; 6. NSString *jsonString = [[NSString alloc]initWithData:netData encoding:NSUTF8StringEncoding]; 7. SBJsonParser *parser = [[SBJsonParser alloc] init]; 8. data = [parser objectWithString:jsonString]; 上述实现了访问网络数据,对最后服务器返回的结果显示。并设置了UIPickerView滑动实现的方法,对于不同的滑动位置,有不同的数据实现,这里需要读者自己每项进行设置。构架并运行模拟器,可以发现访问网络接口返回的数据如下所示。

解析的方法如下代码所示。 网络数据形式如下: 1. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url2]; 2. [request setRequestMethod:@"GET"]; 3. [request startSynchronous]; 4. NSData *netData = request.responseData; 5. NSString *jsonString = [[NSString alloc]initWithData:netData encoding:NSUTF8StringEncoding]; 6. SBJsonParser *parser = [[SBJsonParser alloc] init]; 7. data = [parser objectWithString:jsonString]; 网络数据形式如下: data:( { "area_name" = "\U6c5f\U897f"; "batch_name" = "\U4e00\U672c"; "category_name" = "\U6587\U53f2"; id = 1182; line = 532; yaerTime = 2011; }, "batch_name" = "\U4e8c\U672c"; id = 1172; line = 484;

8.3.4网络接口读取(本地服务器) 若有些环境不能够进行远程服务器的连接与访问,我们还可以通过本地服务器请求数据。在服务器端中我们讲到了服务器与客户端交互接口的实现,用户可以使用本地PC机作为服务器,也可以直接使用我们的服务器作为数据接口。若用户使用本地服务器,在上述的代码中的URL就需要使用本地PC机的的IP地址,如下URL所示。 “http://www.10LAB.cn/zhushou/getControlLinesJson.action?”这个是我们的服务器接口URL,本地服务器把“www.10LAB.cn”改为本机IP地址即可。查看本地IP地址的方法如下,在运行窗口输入“cmd”,然后输入“ipconfig”命令查看服务器PC机的IP地址。 将接口的地址改为如下代码: 1. NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:/192.168.1.101:8080/btk/zhushou/getControlLinesJson.action?c=%ld&y=%@&s=%ld&b=%ld",(long)_catagory,_yearString,(long)province,(long)_batch]]; 2. NSURL *netUrl = [NSURL URLWithString:@"www.10LAB.cn"]; 3. ConnectNetWork *connect = [[ConnectNetWork alloc]init];

8.3.5基视图信息显示实现 主界面一共有两个功能,省控线查询和高校录取线查询,这里我们实现的是省控线查询模块。searchViewController主界面如下图所示。

步骤一:定义UITableView与省份NSArray实例 1. #import <UIKit/UIKit.h> 2. @interface searchScoreViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> 3. @property (nonatomic, retain)UITableView *tableView; 4. @property (nonatomic, retain)NSArray *proviceArray; 5. @end 步骤二:创建并初始化UITableView实例,实现UITableView协议方法 1. static NSString *identifier = @"identifier"; 2. UITableViewCell *cell = nil; 3. if (cell == nil){ 4. cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; 5. } 6. if (indexPath.row == 0) { 7. cell.textLabel.text = @"省控线查询"; 8. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 9. }else{ 10. cell.textLabel.text = @"若干高校往年录取分数线"; 11. cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 12. } 13. cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:cell.frame] autorelease]; 14. cell.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.3]; 15. return cell;

步骤三:实现单击cell选择查询功能 1. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 2. { 3. if (indexPath.row == 0) { 4. provinceViewController *provice = [[provinceViewController alloc]init]; 5. [self.navigationController pushViewController:provice animated:YES]; 6. [provice release]; 7. }else{ 8. schoolScoreViewController *schoolScore = [[schoolScoreViewController alloc]init]; 9. [self.navigationController pushViewController:schoolScore animated:YES]; 10. [schoolScore release]; 11. } 12. }

两个查询分数的选择,当单击第一个cell,则跳转省控线查询;若单击第二个cell,跳转到高校往年录取分查询。 构建并运行,最后的效果如下图所示。

8.4推荐学校模块实现 在本节中,我们将综合前面几个小节的知识,完整的展示“推荐学校”模块的实现过程。因为模块中各个控件的位置相对固定,不需要动态的变化,所以这里我们就采用Xib方法进行视图的布局。布局情况如下图所示。

8.4.1创建推荐学校视图控制器与XIB文件

8.4.2创建推荐学校模块实例并进行界面布局 创建recommendViewController类,在推荐学校功能中,需要用户选择学校,所以还需选择省份proViewController类和选择学校SchoolInfoViewController类。在recommendViewController.h文件中,将两个子类的头文件导入,同时将Xib文件中的控件与.h文件链接起来,创建关联(插座)。

步骤一:创建参数与控件实例 1. @interface recommendViewController : UIViewController 2. <UITableViewDataSource,UITableViewDelegate> 3. { 4. int cata; //科类 5. int batch; //批次 6. int order; //推荐方式 7. } 8. @property (nonatomic, retain)NSMutableArray *data; //存储网络数据数组 9. @property (retain, nonatomic) IBOutlet UISegmentedControl *batchSeg; //批次选择控件 10. @property (retain, nonatomic) IBOutlet UISegmentedControl *orderSeg; //方式选择控件 11. @property (retain, nonatomic) IBOutlet UILabel *areaLabel; //生源地标签 12. @property (retain, nonatomic) IBOutlet UILabel *provinceLabel; //省市标签 13. @property (nonatomic, retain)NSArray *proviceIdArray; //省份ID数组 14. @property (retain, nonatomic) IBOutlet UILabel *categoryLabel; //科类标签 15. @property (retain, nonatomic) IBOutlet UILabel *scoreLabel; //分数标签 16. @property (retain, nonatomic) UITableView *tableView; //表视图 17. @property (retain ,nonatomic) UIView *titleView; //信息头视图 18. - (IBAction)choosePro:(id)sender; //选择省市按钮

8.4.3省份选择功能实现 步骤二:添加UISegmentedControl控件方法,并读取个人信息 步骤三:对信息视图以及表视图进行布局 步骤一:创建实例及协议 在proViewController.h文件中,我们初始化一个表视图和一个数组用于存储省市信息,还需要声明一个协议代理方法用于视图控制器之间的传值。 1. #import <UIKit/UIKit.h> 2. //地区标签值改变协议 3. @protocol proPickViewControllerDelegate <NSObject> 4. @optional 5. - (void)changeProLabelText:(NSString *)text; 6. @end 7. @interface proViewController : UIViewController<UITableViewDataSource,UITableViewDelegate> 8. @property (nonatomic, retain)UITableView *tableView; 9. @property (nonatomic, retain)NSArray *proviceArray; 10. @property (nonatomic, assign)id <proPickViewControllerDelegate>proDelegate; 11. @end

需要注意的是需要设置proViewController实例的代理。协议代理方法实现如下。 步骤二:实现省份选择功能 1. - (IBAction)choosePro:(id)sender 2. { 3. proViewController *pro = [[proViewController alloc]init]; 4. pro.proDelegate = self; 5. UINavigationController *navi = [[UINavigationController alloc]initWithRootViewController:pro]; 6. [self.navigationController presentViewController:navi animated:YES completion:NULL]; 7. [navi release]; 8. } 需要注意的是需要设置proViewController实例的代理。协议代理方法实现如下。 1. #pragma mark - proPickViewControllerDelegate 2. -(void)changeProLabelText:(NSString *)text 3. { 4. _provinceLabel.text = text; 5. }

步骤三:对省份选择UITableView表视图布局,并实现协议方法 1. [super viewDidLoad]; 2. _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, 320, ScreenHeight) style:UITableViewStylePlain]; 3. _tableView.dataSource = self; 4. _tableView.delegate = self; 5. [self.view addSubview:_tableView]; 6. //自定义取消按钮 7. UIButton *cancel = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 8. cancel.frame = CGRectMake(0, 0, 40, 20); 9. [cancel setTitle:@"取消" forState:UIControlStateNormal]; 10. [cancel setShowsTouchWhenHighlighted:YES]; 11. [cancel addTarget:self action:@selector(cancelAction) forControlEvents:UIControlEventTouchUpInside]; 12. UIBarButtonItem *barButton = [[UIBarButtonItem alloc]initWithCustomView:cancel]; 13. [cancel release]; 14. self.navigationItem.leftBarButtonItem = barButton; 15. [barButton release]; 16. //读取plist文件,读取省市信息 17. NSString *plistPath = [[NSBundle mainBundle]pathForResource:@"area" ofType:@"plist"]; 18. _proviceArray = [[NSArray alloc]initWithContentsOfFile:plistPath];

8.4.4网络接口读取(远程服务器) 8.4.5网络接口读取(本地服务器) 步骤四:实现推荐学校视图控制器信息读取和UISegmentedControl控件选择方法 因为个人的信息会根据用户的修改而改变,所以我们在viewDidAppear方法中重新读取了一次本地NSUserDefaults文件,这样每次视图显示时都能显示最新的个人信息。 8.4.4网络接口读取(远程服务器) 8.4.5网络接口读取(本地服务器) 与录取线查询模块类似,若使用本地服务器,在访问网络时的URL就需要使用本地PC机的的IP地址,如下URL所示。 "http://www.10LAB.cn/zhushou/getRecommendSchoolsJson.action? 这个是我们推荐学校模块的服务器接口URL,本地服务器把“www.10LAB.cn”改为本机IP地址即可。 将接口的地址改为如下代码: 1. NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:/192.168.1.101:8080/bkt/zhushou/getRecommendSchoolsJson.action?c=%d&b=%d&a=%@&ta=%@&score=%@&order=%d",cata,batch,areaIdString,provinceID,_scoreLabel.text,order]]; 2. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 3. [request setRequestMethod:@"GET"]; 4. [request startSynchronous];

如小组1使用本地服务器1,ip地址为192. 168. 1. 101,那么url为此ip地址;若小组2使用本地服务器2,ip地址为192 如小组1使用本地服务器1,ip地址为192.168.1.101,那么url为此ip地址;若小组2使用本地服务器2,ip地址为192.168.1.105,那么url改为此ip地址,这就是分组访问不同本地服务器的方法。 最后返回的结果与远程服务器请求结果一致。访问局域网,读取数据成功界面如下图所示。若连接服务器失败,则推荐无结果,表视图为空。

8.4.6显示推荐结果 课后练习 1、修改App整体框架,增加“投档线预测”与“关于我们”模块,加入到Tabbar中。 2、对“投档线预测”模块进行实现,该模块需要的参数有批次、生源地、科类、学校和今年省控线,可以调用服务器接口: http://www.10LAB.cn/zhushou/getControlLinesJson.action?c=%d&y=2014&s=%d&b=%d",采用SBJson解析服务器返回的数据,展示在UITableView中。 3、本章8.2小结“我的高考”模块,使用的是NSUserDefaults方法存储用户信息,将信息保存在本地文件中,现要求读者使用Plist属性列表或者文件的方法将用户的基本信息保存起来。 4、比较NSUserDefaults、list属性列表和文件三种存储方法的优缺点,并各举一例进行详细说明。 5、按照本章8.4小节的内容,已经实现的功能是推荐学校,但并不能显示该学校详细的专业情况,请读者接着完成单击推荐结果表视图,显示该学校具体专业信息的功能。(提示:在使用UINavigationController的PushViewController方法时,将学校的ID传给学校专业信息视图控制器,再次读取网络接口,用于显示)