课程背景:
聚合数据是一家国内最大的基础数据 API 提供商。免费提供从天气查询、空气质量、地图坐标到金融基金、电商比价、违章查询等各个领域的安全、稳定和高效的数据。开发者可以免费使用聚合数据 API 进行移动 App 的快速开发,免除数据收集、维护等环节,大大降低开发周期及成本。
核心内容:
1.条码查询器结构分析。
2.如何将聚合数据 SDK 添加到工程中。
3.模型以及业务类的封装。
4.控制器间的数据传递。
5.tableView 以及 webView 的使用。
开发环境:Xcode 6、Mac OS X 10.10
课程大纲
本课时通过分析条码查询的UI结构和业务逻辑,快速的搭建起条码查询器的业务界面。
本课时介绍聚合数据SDK的下载,以及通过 SDK 使用文档和其中的 Demo,为工程添加 framework,并通过申请聚合数据账号,获取工程需要的 openID 和请求参数。并通过测试代码分析聚合数据的返回数据。
本课时演示如何将第三方框架以及极客学院老师封装好的业务类以及模型添加到工程中并快速使用,并将获取的数据显示在城市选择界面,并实现城市选择界面和首页的数据传递。
本课时分析商品详情界面数据,演示如何使用已经封装好的业务类和模型将电商和超市数据显示到界面上,并给出聚合数据获取数据类型不确定的解决方案。
本课时演示如何添加组头控件以及如何利用Xib快速创建一个 tableView 的 HeaderView ,并将服务器数据利用模型传递到 Xib 内的控件中,其中 imageView 的图片显示用到了 SDWebImage。
本课时演示如何将 UIViewController 中控制器的 view 换成 webView,并利用 webView 展示购买界面,并利用 MBProgressHUD 给出了电商无购买链接时候的UI提示。
课程原型图
课程代码片段
@interface ViewController () <JKCitiesControllerDelegate>
@property (nonatomic, copy) NSString *cityID;
@property (weak, nonatomic) IBOutlet UITextField *inputTextField;
@end
@implementation ViewController
- (IBAction)chaxunOnClick {
if (!self.inputTextField.hasText) {
[MBProgressHUD showError:@"请输入商品条码!"];
return;
}
JKGoodsController *gVC = [[JKGoodsController alloc] init];
BarCodeParam *param = [[BarCodeParam alloc] init];
param.cityid = self.cityID;
#warning 实际开发这里传入的是文本输入看中的字符串
param.barcode = @"6923450601822";
//param.barcode = self.inputTextField.text;
gVC.barCodeParam = param;
[self.navigationController pushViewController:gVC animated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[JHOpenidSupplier shareSupplier] registerJuheAPIByOpenId:JHOpenID];
self.title = @"条码查询器";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"上海" style:UIBarButtonItemStyleDone target:self action:@selector(openCitiesVC)];
self.cityID = @"1";
//
// [self test:kJHAPIS_EX_JHBAR_CITY parameters:@{ @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
[self test:kJHAPIS_EX_JHBAR_BAR parameters:@{ @"barcode": @"6923450601822" ,@"cityid":@"1" , @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0" }];
// [self test:kJHAPIS_EX_JHBAR_BUY parameters:@{ @"barcode":@"6923450601822" , @"dsid":@"5" ,@"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
}
- (void)test:(NSString *)path parameters:(NSDictionary *)parameters{
JuheAPI *juheapi = [JuheAPI shareJuheApi];
[juheapi executeWorkWithAPI:path
parameters:parameters
success:^(id responseObject){
if ([[parameters objectForKey:@"dtype"] isEqualToString:@"xml"]) {
NSLog(@"***xml*** \n %@", responseObject);
}else{
int error_code = [[responseObject objectForKey:@"error_code"] intValue];
if (!error_code) {
NSLog(@" %@", responseObject);
}else{
NSLog(@" %@", responseObject);
}
}
} failure:^(NSError *error) {
NSLog(@"error: %@",error.description);
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)openCitiesVC
{
JKCitiesController *cVC = [[JKCitiesController alloc] init];
cVC.delegate = self;
[self.navigationController pushViewController:cVC animated:YES];
}
#pragma mark - JKCitiesControllerDelegate
- (void)backToMainVcWithCity:(City *)city
{
// 1.替换右上角中按钮的 title
self.navigationItem.rightBarButtonItem.title = city.cityname;
// 2.传递给主控制器一个 cityid 的数据
self.cityID = [NSString stringWithFormat:@"%@", city.cityid];
}
课程地址:http://www.jikexueyuan.com/course/324.html
课程原型图
课程代码片段
@interface ViewController () <JKCitiesControllerDelegate>
@property (nonatomic, copy) NSString *cityID;
@property (weak, nonatomic) IBOutlet UITextField *inputTextField;
@end
@implementation ViewController
- (IBAction)chaxunOnClick {
if (!self.inputTextField.hasText) {
[MBProgressHUD showError:@"请输入商品条码!"];
return;
}
JKGoodsController *gVC = [[JKGoodsController alloc] init];
BarCodeParam *param = [[BarCodeParam alloc] init];
param.cityid = self.cityID;
#warning 实际开发这里传入的是文本输入看中的字符串
param.barcode = @"6923450601822";
//param.barcode = self.inputTextField.text;
gVC.barCodeParam = param;
[self.navigationController pushViewController:gVC animated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[JHOpenidSupplier shareSupplier] registerJuheAPIByOpenId:JHOpenID];
self.title = @"条码查询器";
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"上海" style:UIBarButtonItemStyleDone target:self action:@selector(openCitiesVC)];
self.cityID = @"1";
//
// [self test:kJHAPIS_EX_JHBAR_CITY parameters:@{ @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
[self test:kJHAPIS_EX_JHBAR_BAR parameters:@{ @"barcode": @"6923450601822" ,@"cityid":@"1" , @"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0" }];
// [self test:kJHAPIS_EX_JHBAR_BUY parameters:@{ @"barcode":@"6923450601822" , @"dsid":@"5" ,@"pname":@"com.jikexueyuan.JKJHBarCode" ,@"v":@"2.0"}];
}
- (void)test:(NSString *)path parameters:(NSDictionary *)parameters{
JuheAPI *juheapi = [JuheAPI shareJuheApi];
[juheapi executeWorkWithAPI:path
parameters:parameters
success:^(id responseObject){
if ([[parameters objectForKey:@"dtype"] isEqualToString:@"xml"]) {
NSLog(@"***xml*** \n %@", responseObject);
}else{
int error_code = [[responseObject objectForKey:@"error_code"] intValue];
if (!error_code) {
NSLog(@" %@", responseObject);
}else{
NSLog(@" %@", responseObject);
}
}
} failure:^(NSError *error) {
NSLog(@"error: %@",error.description);
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)openCitiesVC
{
JKCitiesController *cVC = [[JKCitiesController alloc] init];
cVC.delegate = self;
[self.navigationController pushViewController:cVC animated:YES];
}
#pragma mark - JKCitiesControllerDelegate
- (void)backToMainVcWithCity:(City *)city
{
// 1.替换右上角中按钮的 title
self.navigationItem.rightBarButtonItem.title = city.cityname;
// 2.传递给主控制器一个 cityid 的数据
self.cityID = [NSString stringWithFormat:@"%@", city.cityid];
}
课程地址:http://www.jikexueyuan.com/course/324.html
相关推荐
短信验证码的功能,在很多应用中都能用到,我写了一个例子,是接的聚合数据的短信验证码
提供从天气查询、空气质量。开发者可以免费使用聚合数据 API 进行移动 App 的快速开发,免除数据收集、维护等环节,大大降低 开发周期及成本。
4、项目中采用完全还原企业大数据项目开发场景的方式来讲解,每一个业务模块的讲解都包括了需求分析、方案设计、数据设计、编码实现、功能测试、性能调优等环节,真实还原企业级大数据项目开发场景。 模块简介: 1、...
内附1-19章的实战程序。 目录 第1章 c#语言及其开发环境 实例001 根据需要创建所需解决方案 实例002 统一窗体中控件的字体设置 实例003 设置程序代码行号 实例004 通过“格式”菜单布局窗体 实例005 为项目添加dll...
本书是一个小册子,简介明确的介绍了Mongodb聚合基本概念和操作,适合数据分析和财务管理人员入门使用,也适合于初学Mongodb的人员使用,字数不多,但是涵盖了Mongodb聚合框架的入门,常用的高级聚合,针对数据分析...
第7讲 聚合数据组织与处理:结构体.pdf
系统首先从流行的链接聚合网站reddit①寻找新闻报道的链接。reddit存储了大量其他网站的链接,还提供讨论区。网站收集的链接按照类别进行分类,这些类别被统称为subreddit,比如有电视节目、趣味图片等类别。本章...
网宿科技的竞赛项目;咨询聚合系统;iOS APP 新闻/咨询展示;读取网页的json数据(竞赛结束后我们的网页已经关闭,所以现在会一直是加载界面),解析,展示图片,正文,标题,原文链接;支持:下拉刷新,上拉加载,...
│ │ ├[北京思库教育]第105集 大型电子商场开发实战商品列表.avi │ │ └[北京思库教育]第106集 大型电子商场开发实战.avi │ ├ │ │ ├[北京思库教育]第107集 大型电子商场开发实战.avi │ │ ├[北京思库教育...
违章查询完整android studio工程。 使用mvp + retrofit + rxjava开发 使用聚合数据违章查询api,在ViolationKey类中填上你申请的key即可使用
微信小程序学习demo:笑话大全;使用聚合数据API
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 从0开始构建BI商业大数据分析平台,以实际的电商分析业务,贯穿数据生成,数据仓库、ETL、数据分析以及可视化...
包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...
安卓IOS价值2000元聚合直播盒子原生源码
中国聚合支付市场专题分析2019:市场商业模式渐清晰,行业集约化预加剧.pdf
如果您下载了本程序,但是该程序...爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
在线视频聚合VIP影视APP源码 安卓IOS苹果双端 带后台代理分销系统, 代码亲测可用, 内附安装教程, 可二次开发
Maven3_05_maven的聚合和继承 Maven3_06_复习maven的基本内容 Maven3_07_nexus的介绍和安装 Maven3_08_nexus的配置 Maven3_09_发布项目到nexus中 Maven3_10_生命周期和插件简介 Maven3_11_插件基础 Maven3_12_插件的...
基于Python3开发的跨平台FOFA API数据采集器,支持普通查询、网站存活检测、统计聚合查询、Host聚合查询、网站图标查询、批量查询等查询功能。 能够自定义查询FOFA数据,并根据查询结果自动去重和筛选关键字,生成...