接上一篇,这篇我们对我们的客户端加入KissXML,MBProgressHUD,AQridView这几个库,首先我们先加入KissXML,这是XML解析库,支持Xpath,可以方便添加更改任何节点。先从官方网站上下载KissXML这个库

https://github.com/robbiehanson/KissXML

接下来,将KissXML库中的KissXML文件夹拷入我们的工程中,如图

然后跟上次一样,我们通过File/Add File to "Tuan1"这个选项加入到我们的工程中,我们以同样的方法分别加入MBProgressHUD和AGridView这两个库

在Framework中加入QuartzCore.framework,因为AGridView需要用到。

接着我们在代码中加入

#import"MBProgressHUD.h"

#import"DDXML.h"

这二行,运行一下,如果没有报错的话,那这几个库我们就加入成功了。

接着我们更改一下storybord,将FirstViewController这个视图加入NavigationController,选中FirstViewController在主菜单Editor/Embed In/Navigation Controller,系统自动为我们加入NavigationController。

下面,我们将FirstViewController中清空,所有内容都删除

好了,到这一步,我们的视图基本都完成了,接下来就是编码了,首先我们来解析美团网团购信息

FirstViewController.h

#import <UIKit/UIKit.h>
#import "ASIHTTPRequest.h"@interface KKFirstViewController : UIViewController<ASIHTTPRequestDelegate>@end

FirstViewController.m

#import "KKFirstViewController.h"
#import "MBProgressHUD.h"
#import "DDXML.h"
#import "DDXMLElementAdditions.h"@interface KKFirstViewController (){MBProgressHUD *hud;NSMutableArray *arrays;}@end@implementation KKFirstViewController- (void)viewDidLoad
{[super viewDidLoad];self.navigationItem.title = @"美团";//背景UIImage *bgImage = [UIImage imageNamed:@"bg-app.png"];self.view.backgroundColor = [UIColor colorWithPatternImage:bgImage];//HUD提示框hud = [[MBProgressHUD alloc] init];hud.labelText = @"载入数据...";//网址NSString *urlString = @"http://www.meituan.com/api/v2/beijing/deals";[hud showWhileExecuting:@selector(startHttpRequest:) onTarget:self withObject:urlString animated:YES];//因为hud需要显示在最前面,所以我们在NavigationController中加入[self.navigationController.view addSubview:hud];arrays = [NSMutableArray array];
}//请求URL
-(void)startHttpRequest:(NSString *)url{ASIHTTPRequest *httpRequest = [[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:url]];httpRequest.delegate = self;[httpRequest startSynchronous];}- (void)viewDidUnload
{[super viewDidUnload];// Release any retained subviews of the main view.
}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}//请求结束
-(void)requestFinished:(ASIHTTPRequest *)request{//移除提示框[hud removeFromSuperview];//返回解析后的数据,每一个Array包括一个字典arrays = [self xmlParser:[request responseData]];NSLog(@"%@", arrays);}//解析结点
static NSString *kXPath_Item = @"//data";
static NSString *kName_Deal = @"deal";
static NSString *kName_Title = @"deal_title";
static NSString *kName_Url = @"deal_url";
static NSString *kName_Img = @"deal_img";
static NSString *kName_Desc = @"deal_desc";
static NSString *kName_Tips = @"deal_tips";//XML解析
-(NSMutableArray *)xmlParser:(NSData *)data{NSMutableArray *array = [NSMutableArray array];//文档开始DDXMLDocument *xmlDoc = [[DDXMLDocument alloc] initWithData:data options:0 error:nil];//返回<data>中的所有元素NSArray *items = [xmlDoc nodesForXPath:kXPath_Item error:nil];//遍历每个元素for (DDXMLElement *item in items) {NSMutableDictionary *dict = [NSMutableDictionary dictionary];//返回<deal>中的所有元素NSArray *deals = [item elementsForName:kName_Deal];for (DDXMLElement *deal in deals) {//<deal_title>DDXMLElement *title = [deal elementForName:kName_Title];if (title) {[dict setObject:[title stringValue] forKey:kName_Title];}//<deal_url>DDXMLElement *url = [deal elementForName:kName_Url];if (url) {[dict setObject:[url stringValue] forKey:kName_Url];}//<deal_img>DDXMLElement *img = [deal elementForName:kName_Img];if (img) {[dict setObject:[img stringValue] forKey:kName_Img];}//<deal_desc>DDXMLElement *desc = [deal elementForName:kName_Desc];if (desc) {[dict setObject:[desc stringValue] forKey:kName_Desc];}//<deal_tips>DDXMLElement *tips = [deal elementForName:kName_Tips];if (tips) {[dict setObject:[tips stringValue] forKey:kName_Tips];}}[array addObject:dict];}return array;}//请求中止(出错)
-(void)requestFailed:(ASIHTTPRequest *)request{[hud removeFromSuperview];NSError *error = [request error];NSLog(@"RequestError : %@", [error description]);}@end

这里面最重要的就是解析返回的XML数据,代码里面的注释也写得比较详细了,我想大家也应该能看得懂,取得数据后我们就可以显示在AQGridView中去了。这个内容我们放到第三篇中做详细介绍。

[iPhone中级]iPhone团购信息客户端的开发 (二)相关推荐

  1. [iPhone中级] iPhone团购信息客户端的开发 (一)

    因为工作的原因,已经很久没有更新博客了,这次我们就来完成一个稍显复杂的一个团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个 ...

  2. [iPhone中级] iPhone团购信息客户端的开发 (三)

    接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接 ...

  3. [iPhone中级] iPhone团购信息客户端的开发 (四)

    我们对团购客户端进行了重构,来看一下效果图呢 这里因为美团提供了地图坐标,所以我们也加入了MapKit来显示店铺所在位置,但只有美团有,其他几个网站都没有提供. 我们把源码放出:谢谢大家一如既往的支持 ...

  4. 糯米团—重制“iPhone团购信息客户端”(一)

    前言 因为是重制的客户端,作者博客中写到的很详细的内容相同的这里不会再写,但会给出提示,对照查看. iPhone团购信息客户端的开发 目录结构 由于原作没有按照分层架构设计,所以这里我按照自己想法进行 ...

  5. 糯米团—重制“iPhone团购信息客户端”(零)源代码与跳的那些坑和思考

    前言 早就盼望着这一天发布博客记录我写程序的路程!是的,是第一个写在csdn上的app制作笔记!终于完成这个程序!!虽然有bug且功能单一,作为一个练手的app做出还是很有成就感,故拿出来和同样的新手 ...

  6. ios 团购信息客户端demo(一)

    团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个主要流行的IOS开发库,我们先来看一下效果图 首先我们新建一个IOS工程, ...

  7. ios 团购信息客户端demo(三)

    接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接 ...

  8. 糯米团—重制“iPhone团购信息客户端”(四)

    奥对,忘了说了,Xcode7已经默认https连接了,自动锁定了http连接 Solution: 1. 在Info.plist中添加 NSAppTransportSecurity 类型 Diction ...

  9. 糯米团—重制“iPhone团购信息客户端”(二)

    好,接着上一篇来,BusinessLogicLayer完了之后是PresentationLayer 首先从MainCell文件夹里开始 这里面存放的是GridView的单元格的定义,最终呈现出 的样式 ...

最新文章

  1. 吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法
  2. Python中的retry
  3. Python Flask web 项目零改动迁移至阿里云函数计算
  4. 破冰接入云信,打造陌生人游戏社交APP
  5. 为什么c相电路在前面_三相电路分析
  6. 基础 - jQuery选项卡
  7. c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片
  8. 七、spring生命周期之初始化和销毁方法
  9. 使用组策略统一修改客户端本地管理员密码
  10. 和我一起学《HTTP权威指南》——Web服务器
  11. RIP简易配置第二篇
  12. FasterR-CNN,R-FCN,SSD,FPN,RetinaNet,YOLOv3速度和准确性比较
  13. vue怎么调用子元素的方法_vue 父组件中调用子组件函数的方法
  14. 2023年兔年好看的头像
  15. 1004_Median
  16. pdb 符号文件 如何生成的,作用
  17. android2.3.7刷机包,【新蜂】联想A789 刷机包 V3.2 (Android 4.0.4) 稳定流畅 纯净省电 完整ROOT...
  18. Halcon图像读取的方式
  19. python 正则表达函数_python笔记-正则表达式常用函数
  20. 【笔记】Linux 802.11n CSI Tool部分机翻

热门文章

  1. 2017阿里校招笔试小记
  2. try catch 的作用
  3. 618超值数码好物有哪些?推荐五款入手超值的数码好物
  4. 【220221】838.推多米诺
  5. 求大神帮忙看看 自己是一个小白 第一次安装MySQL碰到这一步没辙了 也不知道红色感叹号什么意思 在百度看了好久也没找到类似问题
  6. 10.Python中print函数中中逗号和加号的区别
  7. Debian 英文环境变中文环境
  8. 如何检测照片中共有多少张人脸,机器学习
  9. VUE+ElementUI+PHP+MySQL实现仿照印记中文网站(2)----前端架构
  10. windows环境搭建web服务器(IIS)