MBOpenWeather
MBOpenWeather 是一个简单的 OpenWeather API 包装器,允许
- 无缝地进行 API 调用
- 检索有关指定位置的天气信息(通过 ID、坐标或名称)
- 返回简化的、人类可读的值
演示
要求
- Swift 4
- iOS 11.0+
安装
MBOpenWeather 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'MBOpenWeather'
用法
初始化
请确保您向框架提供它所需要的API密钥以使其正常工作
MBWeatherManager.shared.setAPIKey("")
可用的API调用
MBOpenWeather 允许获取指定位置的气象信息,位置可以采用以下三种方法之一指定
1 - 通过ID
public func weatherInfo(forCityId cityId:Int?, withSuccess success:@escaping (MBWeatherModel) -> Void, andFailure failure:@escaping (NSError) -> Void)
2 - 通过坐标(纬度/经度)
public func weatherInfo(forLatitude latitude:Double, longitude: Double, withSuccess success:@escaping (MBWeatherModel) -> Void, andFailure failure:@escaping (NSError) -> Void)
3 - 通过城市名称
public func weatherInfo(forCityName cityName:String, withSuccess success:@escaping (MBWeatherModel) -> Void, andFailure failure:@escaping (NSError) -> Void)
返回值
成功
如果 MBOpenWeather 能够检索到所需的信息,则前面提到的 3 个函数中的每一个都将返回一个包含所选位置所有相关天气信息的 MBWeatherModel 对象。下面是该对象的架构(由 openweathermap.org 定义)
- coord
- coord.lon 城市地理经度位置
- coord.lat 城市地理纬度位置
- weather(更多信息:天气状况代码)
- weather.id 天气状况 ID
- weather.main 天气参数组(雨,雪,极值等)
- weather.description 组内天气状况。您可以使用您的语言输出结果。了解更多
- weather.icon 天气图标 ID
- base 内部参数
- main
- main.temp 温度。单位:默认为开尔文,公制:摄氏度,英制:华氏度。
- main.feels_like 温度。此温度参数考虑了人类对天气的感知。单位:默认为开尔文,公制:摄氏度,英制:华氏度。
- main.pressure 大气压力(海平面,如果没有海平面或地面水平数据),hPa
- main.humidity 湿度,%
- main.temp_min 当前最低温度。这是在大型城市群和城市地区观察到的最低温度(目前)。单位:默认为开尔文,公制:摄氏度,英制:华氏度。
- main.temp_max 当前最高温度。这是在大型城市群和城市地区观察到的最高温度(目前)。单位:默认为开尔文,公制:摄氏度,英制:华氏度。
- main.sea_level 海平面大气压力,hPa
- main.grnd_level 地面水平大气压力,hPa
- wind
- wind.speed 风速。单位:默认为米/秒,公制:米/秒,英制:英里/小时。
- wind.deg 风向,度数(气象学度数)
- wind.gust 风暴。单位:默认为米/秒,公制:米/秒,英制:英里/小时
- clouds
- clouds.all 雾量,%
- rain
- rain.1h 最近 1 小时的雨量,mm
- rain.3h 最近 3 小时的雨量,mm
- snow
- snow.1h 最近 1 小时的雪量,mm
- snow.3h 最近 3 小时的雪量,mm
- dt 数据计算时间,Unix,UTC
- sys
- sys.type 内部参数
- sys.id 内部参数
- sys.message 内部参数
- sys.country 国家代码(GB,JP 等)
- sys.sunrise 日出时间,Unix,UTC
- sys.sunset 日落时间,Unix,UTC
- timezone 与 UTC 的秒数差
- id 城市 ID
- name 城市名称
- cod 内部参数
该模型还公开了某些可读格式的值
@objc public var weatherDescription: String? // ex : Overcast clouds
@objc public var humidity: String? // ex : 68%
@objc public var pressure: String? // ex : 1008hPA
@objc public var windDirection: String? // ex : SW
@objc public var cloudCoverage: String? // ex : 90%
@objc public var sunriseTime: String? // ex : 05:13
@objc public var sunsetTime: String? // ex : 20:58
@objc public var daylightHours: String? // ex : 15
@objc public func getTemperature(in unit: TemperatureUnit = .kelvin) -> String? // ex : 21°C
@objc public func getWindSpeed(in unit: WindSpeedUnit = .kmPerHour) -> String? // ex : 21Km/h
失败
如果请求失败,MBOpenWeather 将返回一个错误对象,以下是已知的错误代码列表
代码 | 域 |
---|---|
-1 | INVALID_URL |
-2 | UNSUPPORTED_METHOD |
-3 | MISSING_API_KEY |
-4 | MISSING_CITY_IDENTIFIER |
-5 | INVALID_RESPONSE |
-6 | INVALID_RESPONSE_CODE |
作者
许可证
MBOpenWeather采用MIT许可证。请参阅LICENSE文件获取更多信息。