根据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阅读器,不过 ...
随机推荐
- 快速构建Windows 8风格应用6-GridView数据控件
原文:快速构建Windows 8风格应用6-GridView数据控件 本篇博文主要介绍什么是GridView数据控件.如何构建常用的GridView数据呈现样式. 什么是GridView数据控件? G ...
- C#在outlook里创建一封邮件到草稿箱
原文:C#在outlook里创建一封邮件到草稿箱 1.引用Microsoft.Office.Interop.Outlook.dll 2. 实现代码 public static int SendToD ...
- __declspec(novtable)keyword
__declspec (novtable )keyword,表示这个类不生成虚函数表.可是继承类不影响(无论基类是否使用了keyword). 不使用此keyword.类在生成对象时构造函数和析构函数多 ...
- Swift辛格尔顿设计模式(SINGLETON)
本文已更新为2.0语法,具体查看:一叶单例模式 一.意图 保证一个类公有一个实例.并提供一个訪问它的全局訪问点. 二.使用场景 1.使用场景 当类仅仅能有一个实例并且客户能够从一个众所周知的訪问点訪问 ...
- NHibernate 数据查询之QueryOver<T>
NHibernate 数据查询之QueryOver<T> 一.限制运算符 Where:筛选序列中的项目WhereNot:反筛选序列中的项目 二.投影运算符 Select:创建部分序列的 ...
- Andy Williams 《Love Story》
where do i beginto tell a story of how great a love can bethe sweet love story that is older than th ...
- {{angular.js 使用技巧}} - 实现计算列属性
前端MV*框架现在有很多,其中某些框架有计算列(又叫监控属性),比如:微软推荐的 Knockout.js 和博客园司徒正美的 avalon.js 框架. 本人只使用过 Knockout.js,aval ...
- document对象属性documentMode与CompatMode
DOCTYPE DOCTYPE全称Document Type Declaration(文档类型声明,缩写DTD) DTD的声明影响浏览器对于CSS代码及Javascript脚本的解析. 渲染模式 渲染 ...
- mac下安装配置java jdk,maven,resin
mac jdk安装及环境变量配置 安装http://www.ifunmac.com/2013/04/mac-jdk-7/ jdk安装目录:/Library/Java/JavaVirtualMachin ...
- javascript-无间缝滚动,封装
原生javascript-无间缝滚动,封装 目前支持的是竖向与横向滚动 http://lgyweb.com/marScroll/ 现在分析下无间缝实现的基本思路(竖向例子): HTML结构: 1 &l ...