根据Mob官网的天气预报接口写了一个简单的demo
第一步 自己注册一个应用,然后获取里面的 App Key,下载MobAPI SDK
然后拖入 MobAPI.framework 和 MOBFoundation.framework 到你的项目中
官网是 :http://www.mob.com

第二步 导入libraries 文件

第三步 : 新建一个 UIViewController 控制器 --- WeatherMainViewController
然后在 AppDelegate.m 里面写入如下 要导入
#import "WeatherMainViewController.h"
#import <MobAPI/MobAPI.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
// 1. 首页
WeatherMainViewController *weather = [[WeatherMainViewController alloc] init ];
self.window.rootViewController = weather;
[self.window makeKeyAndVisible];
[MobAPI registerApp:@"1ab37d5dsa3a3c"];
return YES;
}
注意: 1ab37d5dsa3a3c 是你的 App Key
第四:根据api文档获取里面的字段和返回参数取值
他的返回参数是
{
"msg": "success",
"result": [
{
"airCondition": "良",
"city": "北京",
"coldIndex": "低发期",
"updateTime": "",
"date": "2015-09-08",
"distrct": "门头沟",
"dressingIndex": "短袖类",
"exerciseIndex": "适宜",
"future": [
{
"date": "2015-09-09",
"dayTime": "阵雨",
"night": "阴",
"temperature": "24°C/18°C",
"week": "星期三",
"wind": "无持续风向小于3级"
},
{
"date": "2015-09-10",
"dayTime": "阵雨",
"night": "阵雨",
"temperature": "22°C/15°C",
"week": "星期四",
"wind": "无持续风向小于3级"
},
{
"date": "2015-09-11",
"dayTime": "阴",
"night": "晴",
"temperature": "23°C/15°C",
"week": "星期五",
"wind": "北风3~4级无持续风向小于3级"
},
{
"date": "2015-09-12",
"dayTime": "晴",
"night": "晴",
"temperature": "26°C/13°C",
"week": "星期六",
"wind": "北风3~4级无持续风向小于3级"
},
{
"date": "2015-09-13",
"dayTime": "晴",
"night": "晴",
"temperature": "27°C/16°C",
"week": "星期日",
"wind": "无持续风向小于3级"
},
{
"date": "2015-09-14",
"dayTime": "晴",
"night": "多云",
"temperature": "27°C/16°C",
"week": "星期一",
"wind": "无持续风向小于3级"
},
{
"date": "2015-09-15",
"dayTime": "少云",
"night": "晴",
"temperature": "26°C/14°C",
"week": "星期二",
"wind": "南风3级南风2级"
},
{
"date": "2015-09-16",
"dayTime": "局部多云",
"night": "少云",
"temperature": "26°C/15°C",
"week": "星期三",
"wind": "南风3级南风2级"
},
{
"date": "2015-09-17",
"dayTime": "阴天",
"night": "局部多云",
"temperature": "26°C/15°C",
"week": "星期四",
"wind": "东南风2级"
}
],
"humidity": "湿度:46%",
"province": "北京",
"sunset": "18:37",
"sunrise": "05:49",
"temperature": "25℃",
"time": "14:35",
"washIndex": "不适宜",
"weather": "多云",
"week": "周二",
"wind": "南风2级"
}
],
"retCode": ""
}
最后:
//
// WeatherMainViewController.m
// 全球天气预报
//
// Created by txbydev3 on 17/1/11.
// Copyright © 2017年 陈竹青. All rights reserved.
// //屏幕的宽度
#define TXBYApplicationW ([UIScreen mainScreen].applicationFrame.size.width)
//屏幕的高度
#define TXBYApplicationH ([UIScreen mainScreen].applicationFrame.size.height) #import "WeatherMainViewController.h"
#import "WeatherViewController.h"
#import "Weather.h"
#import "FutureWeather.h"
#import "MJExtension.h"
#import <MobAPI/MobAPI.h>
#import <MOBFoundation/MOBFoundation.h> @interface WeatherMainViewController ()<UITableViewDelegate,UITableViewDataSource> @property (nonatomic, strong) NSArray *resultArray;
@property (nonatomic, strong) NSArray *futureArray; @property (nonatomic, strong) Weather *weather; @property (nonatomic, strong) UITableView *tableView ; @property (weak, nonatomic) UILabel *city;
@property (weak, nonatomic) UILabel *airCondition;
@property (weak, nonatomic) UILabel *temperature;
@property (weak, nonatomic) UILabel *weatherLab; @end @implementation WeatherMainViewController - (void)viewDidLoad {
[super viewDidLoad];
[self request ];
} - (void)setHeadView {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
imageView.image = [UIImage imageNamed:@"background"];
[self.view addSubview:imageView];
// 城市
UILabel *cityLabel = [[UILabel alloc] initWithFrame:CGRectMake((TXBYApplicationW - )*0.5, , , )];
cityLabel.textColor = [UIColor whiteColor];
cityLabel.font = [UIFont systemFontOfSize:];
[imageView addSubview:cityLabel];
self.city = cityLabel; // 空气指数
UILabel *air = [[UILabel alloc] initWithFrame:CGRectMake(, CGRectGetMaxY(cityLabel.frame) + , , )];
air.textColor = [UIColor whiteColor];
air.font = [UIFont systemFontOfSize:];
air.text = @"空气指数";
[imageView addSubview:air]; UILabel *airCondition = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(air.frame), CGRectGetMaxY(cityLabel.frame) + , TXBYApplicationW - , )];
airCondition.textColor = [UIColor whiteColor];
airCondition.font = [UIFont systemFontOfSize:];
[imageView addSubview:airCondition];
self.airCondition = airCondition; // 温度
UILabel *temp = [[UILabel alloc] initWithFrame:CGRectMake(, CGRectGetMaxY(air.frame) + , , )];
temp.textColor = [UIColor whiteColor];
temp.text =@"温度";
temp.font = [UIFont systemFontOfSize:];
[imageView addSubview:temp]; UILabel *temperature = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(temp.frame) , CGRectGetMaxY(airCondition.frame) + , , )];
temperature.textColor = [UIColor whiteColor];
temperature.font = [UIFont systemFontOfSize:];
[imageView addSubview:temperature];
self.temperature = temperature; // 天气
UILabel *weatherLab = [[UILabel alloc] initWithFrame:CGRectMake(, CGRectGetMaxY(temp.frame) + , , )];
weatherLab.textColor = [UIColor whiteColor];
weatherLab.text =@"天气";
weatherLab.font = [UIFont systemFontOfSize:];
[imageView addSubview:weatherLab]; UILabel *weather = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMaxX(weatherLab.frame), CGRectGetMaxY(temperature.frame) + , , )];
weather.textColor = [UIColor whiteColor];
weather.font = [UIFont systemFontOfSize:];
// weather.textAlignment = NSTextAlignmentCenter;
[imageView addSubview:weather];
self.weatherLab = weather; self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(, CGRectGetMaxY(weather.frame) + , TXBYApplicationW, TXBYApplicationH *0.5) style:UITableViewStylePlain];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.tableFooterView = [UIView new];
[imageView addSubview:self.tableView];
} -(void)request {
//1.确定请求路径
NSString *urlStr = @"http://apicloud.mob.com/v1/weather/query?key=1ab5503423a3c&city=苏州&province=江苏";
// 防止 string 类型 转 url 为空
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//3.获得会话对象
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
//6.解析服务器返回的数据
//说明:(此处返回的数据是JSON格式的,因此使用NSJSONSerialization进行反序列化处理)
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",dict);
[self setHeadView];
self.resultArray = [Weather mj_objectArrayWithKeyValuesArray:dict[@"result"]];
for (Weather *weather in self.resultArray) {
self.city.text = weather.city;
self.temperature.text = weather.temperature;
self.airCondition.text =weather.airCondition;
self.weatherLab.text =weather.weather;
self.futureArray = weather.future;
}
}
}];
//5.执行任务
[dataTask resume];
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.futureArray.count;
} - (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.backgroundColor = [UIColor clearColor];
}
FutureWeather *weather = self.futureArray[indexPath.row]; cell.textLabel.text = weather.week;
cell.detailTextLabel.text = weather.temperature;
return cell;
} - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return ;
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
} @end
效果图

根据Mob官网的天气预报接口写了一个简单的demo的更多相关文章
- 只是一个用EF写的一个简单的分页方法而已
只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...
- 写了一个简单的CGI Server
之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...
- 自己写的一个简单PHP采集器
自己写的一个简单PHP采集器 <?php //**************************************************************** $url = &q ...
- 写了一个简单可用的IOC
根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录 只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免 ...
- 写了一个简单的 Mybatis
写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...
- vue3官网介绍,安装,创建一个vue实例
前言:这一章主要是vue的介绍.安装.以及如何创建一个vue实例. 一.vue介绍 vue3中文官网:建议先自己看官网. https://v3.cn.vuejs.org/ vue是渐进式框架,渐进式指 ...
- 写了一个简单的NodeJS实现的进程间通信的例子
1. cluster介绍 大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU ...
- 利用HttpClient写的一个简单页面获取
之前就听说过利用网络爬虫来获取页面,感觉还挺有意思的,要是能进行一下偏好搜索岂不是可以满足一下窥探欲. 后来从一本书上看到用HttpClient来爬取页面,虽然也有源码,但是也没说用的HttpClie ...
- 今天写了一个简单的新浪新闻RSS操作类库
今天,有位群友问我如何获新浪新闻列表相关问题,我想,用正则表达式网页中取显然既复杂又不一定准确,现在许多大型网站都有RSS集合,所以我就跟他说用RSS应该好办一些. 一年前我写过一个RSS阅读器,不过 ...
随机推荐
- php错误及异常捕捉
原文:php错误及异常捕捉 在实际开发中,错误及异常捕捉仅仅靠try{}catch()是远远不够的. 所以引用以下几中函数. a) set_error_handler 一般用于捕捉 E_NOTI ...
- 原生JavaScript生成GUID的实现
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...
- 三个创建WebStorm项目的方法
WebStorm项目代表一个完整的解决方案和定义项目范围设置.而重点则是代码完成.代码重构.代码风格等. 因此在建立项目时,WebStorm可以通过三个方面来完成:下载远程项目.复制控制存储库项目和直 ...
- Maven入门笔记
首先安装Maven,Maven的安装很简单,这里就不在说了. 先要确定把工程放在哪个路径下,创建一个文件夹并且在该文件夹下打开shell命令.可以先运行下面的命令,创建一个工程: mvn archet ...
- Juqery遮罩插件
Juqery遮罩插件,想罩哪就罩哪! 一 前言 在项目开发时发现没有一个用起来 爽一点的遮罩插件,看起来觉得不难 好吧那就利用空闲时间,自己折腾一个吧,也好把jquery再温习一下, 需要的功能 ...
- grasp设计模式笔记回顾
根据讲师所讲做了一下笔记以便自己能方便学习: ------------------------------------------grasp设计模式: grasp(general responsibi ...
- RequireJS 入门指南
RequireJS 入门指南 http://requirejs.org/ 简介如今最常用的JavaScript库之一是RequireJS.最近我参与的每个项目,都用到了RequireJS,或者是我向它 ...
- 使用shell+awk完成Hive查询结果格式化输出
好久不写,一方面是工作原因,有些东西没发直接发,另外的也是习惯给丢了,内因所致.今天是个好日子,走起! btw,实际上这种格式化输出应该不只限于某一种需求,差不多是通用的. 需求: --基本的:当前H ...
- 重定向和VT100编程
重定向和VT100编程 一.文件重定向 我们知道在linux shell 编程的时候,可以使用文件重定向功能,如下所示: [root@localhost pipe]# echo "h ...
- Day1:T3 bfs T4 树形DP
T3:BFS 回看了一下Day1的T3...感觉裸裸的BFS,自己当时居然没有看出来... 同时用上升和下降两种状态bfs即可 这一题还要注意一个细节的地方,就是题目要求的是求往返的最优解 k=min ...