[iPhone中级]iPhone团购信息客户端的开发 (二)
接上一篇,这篇我们对我们的客户端加入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团购信息客户端的开发 (二)相关推荐
- [iPhone中级] iPhone团购信息客户端的开发 (一)
因为工作的原因,已经很久没有更新博客了,这次我们就来完成一个稍显复杂的一个团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个 ...
- [iPhone中级] iPhone团购信息客户端的开发 (三)
接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接 ...
- [iPhone中级] iPhone团购信息客户端的开发 (四)
我们对团购客户端进行了重构,来看一下效果图呢 这里因为美团提供了地图坐标,所以我们也加入了MapKit来显示店铺所在位置,但只有美团有,其他几个网站都没有提供. 我们把源码放出:谢谢大家一如既往的支持 ...
- 糯米团—重制“iPhone团购信息客户端”(一)
前言 因为是重制的客户端,作者博客中写到的很详细的内容相同的这里不会再写,但会给出提示,对照查看. iPhone团购信息客户端的开发 目录结构 由于原作没有按照分层架构设计,所以这里我按照自己想法进行 ...
- 糯米团—重制“iPhone团购信息客户端”(零)源代码与跳的那些坑和思考
前言 早就盼望着这一天发布博客记录我写程序的路程!是的,是第一个写在csdn上的app制作笔记!终于完成这个程序!!虽然有bug且功能单一,作为一个练手的app做出还是很有成就感,故拿出来和同样的新手 ...
- ios 团购信息客户端demo(一)
团购信息客户端,主要整合了ASIHTTPREQUEST,KISSXML,AQGridView,MBProgressHUD这几个主要流行的IOS开发库,我们先来看一下效果图 首先我们新建一个IOS工程, ...
- ios 团购信息客户端demo(三)
接上二篇的内容,今天我们就来介绍一下如何将解析出来的数据放入AQGridView中显示出来,因为我们的工程中已经将AQGridView导入了,所以我们在KKFirstViewController中直接 ...
- 糯米团—重制“iPhone团购信息客户端”(四)
奥对,忘了说了,Xcode7已经默认https连接了,自动锁定了http连接 Solution: 1. 在Info.plist中添加 NSAppTransportSecurity 类型 Diction ...
- 糯米团—重制“iPhone团购信息客户端”(二)
好,接着上一篇来,BusinessLogicLayer完了之后是PresentationLayer 首先从MainCell文件夹里开始 这里面存放的是GridView的单元格的定义,最终呈现出 的样式 ...
最新文章
- 吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法
- Python中的retry
- Python Flask web 项目零改动迁移至阿里云函数计算
- 破冰接入云信,打造陌生人游戏社交APP
- 为什么c相电路在前面_三相电路分析
- 基础 - jQuery选项卡
- c#form+mysql储存读取图片_C#从SQL server数据库中读取l图片和存入图片
- 七、spring生命周期之初始化和销毁方法
- 使用组策略统一修改客户端本地管理员密码
- 和我一起学《HTTP权威指南》——Web服务器
- RIP简易配置第二篇
- FasterR-CNN,R-FCN,SSD,FPN,RetinaNet,YOLOv3速度和准确性比较
- vue怎么调用子元素的方法_vue 父组件中调用子组件函数的方法
- 2023年兔年好看的头像
- 1004_Median
- pdb 符号文件 如何生成的,作用
- android2.3.7刷机包,【新蜂】联想A789 刷机包 V3.2 (Android 4.0.4) 稳定流畅 纯净省电 完整ROOT...
- Halcon图像读取的方式
- python 正则表达函数_python笔记-正则表达式常用函数
- 【笔记】Linux 802.11n CSI Tool部分机翻