第一步 自己注册一个应用,然后获取里面的 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的更多相关文章

  1. 只是一个用EF写的一个简单的分页方法而已

    只是一个用EF写的一个简单的分页方法而已 慢慢的写吧.比如,第一步,先把所有数据查询出来吧. //第一步. public IQueryable<UserInfo> LoadPagesFor ...

  2. 写了一个简单的CGI Server

    之前看过一些开源程序的源码,也略微知道些Apache的CGI处理程序架构,于是用了一周时间,用C写了一个简单的CGI Server,代码算上头文件,一共1200行左右,难度中等偏上,小伙伴可以仔细看看 ...

  3. 自己写的一个简单PHP采集器

    自己写的一个简单PHP采集器 <?php //**************************************************************** $url = &q ...

  4. 写了一个简单可用的IOC

    根据<架构探险从零开始写javaweb框架>内容写的一个简单的 IOC 学习记录    只说明了主要的类,从上到下执行的流程,需要分清主次,无法每个类都说明,只是把整个主线流程说清楚,避免 ...

  5. 写了一个简单的 Mybatis

    写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...

  6. vue3官网介绍,安装,创建一个vue实例

    前言:这一章主要是vue的介绍.安装.以及如何创建一个vue实例. 一.vue介绍 vue3中文官网:建议先自己看官网. https://v3.cn.vuejs.org/ vue是渐进式框架,渐进式指 ...

  7. 写了一个简单的NodeJS实现的进程间通信的例子

    1. cluster介绍 大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU ...

  8. 利用HttpClient写的一个简单页面获取

    之前就听说过利用网络爬虫来获取页面,感觉还挺有意思的,要是能进行一下偏好搜索岂不是可以满足一下窥探欲. 后来从一本书上看到用HttpClient来爬取页面,虽然也有源码,但是也没说用的HttpClie ...

  9. 今天写了一个简单的新浪新闻RSS操作类库

    今天,有位群友问我如何获新浪新闻列表相关问题,我想,用正则表达式网页中取显然既复杂又不一定准确,现在许多大型网站都有RSS集合,所以我就跟他说用RSS应该好办一些. 一年前我写过一个RSS阅读器,不过 ...

随机推荐

  1. 安装后维修指南再次双系统xp、win7、ubuntu

    在本文中,主机为单个硬盘,三个步骤. 第一步: 使用liveCD要么u盘引导计算机进入ubuntu.这里最好是确保两个系统版本号之间的一致性. 菜单 System -> Administrati ...

  2. 设计模式之职责链模式(Chain of Responsibility)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  3. Vs2010中水晶报表引用及打包

    原文:Vs2010中水晶报表引用及打包 转自:http://yunhaifeiwu.iteye.com/blog/1172283 Vs2010中水晶报表引用 在sap官网中下载支持vs 2010中的水 ...

  4. 在项目管理工具Redmine中使用SubVersion进行版本管理

    原文:在项目管理工具Redmine中使用SubVersion进行版本管理 在项目管理工具Redmine中使用SubVersion进行版本管理 分类: Redmine2009-06-01 10:11 5 ...

  5. jQuery MiniUI

    今天找到一个关于jQuery的又一个不错的UI,特此保存下.备用. http://www.miniui.com/

  6. javascript 学习总结(八)属性定义方法

    1.defineProperty /* 定义(Definition).定义属性需要使用相应的函数,比如: Object.defineProperty(obj, "prop", pr ...

  7. 【工作笔记二】ASP.NET MVC框架下使用MVVM模式

    ASP.NET MVC框架下使用MVVM模式 原文:http://www.cnblogs.com/n-pei/archive/2011/07/21/2113022.html 对于asp.net mvc ...

  8. 简单的php和apache的安装

    今天刚刚接触到PHP  要想深入学习一门语言  首先我们先从安装开始   对于php和apache这两个程序是比较难以安装的  好了  下面我们开始正式安装: 首先我们得准备好  apache  以及 ...

  9. Mysql 嵌套游标添以及任意位置声明变量的方法

    在写存储过程的时候,会遇到某个游标的筛选条件来自于 先前语句运行的结果,比较常见的方式是 再写一个存储过程,通过调用来完成 动态参数的配置, 或者使用 动态sql的功能,而这两种方式都不能很好的解决这 ...

  10. linux创建进程和等待进程退出

    在WIN32下,在一个进程里我们可以使用CreateProcess()创建一个进程,然后通过调用WaitForSingleObect(), WaitForMultipleObject()等待进程退出. ...