需求
要使用 ForecastIO,您只需具备 Dark Sky API 的 API 密钥。Dark Sky API。ForecastIO 支持 iOS (≥9.0),macOS (≥10.10),watchOS (≥2.0) 和 tvOS (≥9.0)。
安装
ForecastIO 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
中。
pod "ForecastIO"
要使用 Carthage 集成,请指定它在您的 Cartfile
中。
github "sxg/ForecastIO"
Swift 2.3
在 swift2.3 分支上有 Swift 2.3 兼容版本的 ForecastIO。这个版本冻结在 ForecastIO 2.1.1 API,不再受支持。要安装 Swift 2.3 兼容版本的 ForecastIO,只需将以下行添加到您的 Podfile
中。
pod "ForecastIO", :git => "https://github.com/sxg/ForecastIO.git", :branch => "swift2.3"
要使用 Carthage 集成 Swift 2.3 兼容版本,请将其指定在您的 Cartfile
中。
github "sxg/ForecastIO" "swift2.3"
文档与单元测试
ForecastIO的完整文档可以在CocoaDocs上找到。
ForecastIO包含一套完整的单元测试,代码覆盖率100%。
使用
首先创建一个具有您的API密钥的DarkSkyClient
。
import ForecastIO
...
let client = DarkSkyClient(apiKey: "YOUR_API_KEY_HERE")
您可以选择希望Forecast
响应使用的单位。
client.units = .si
支持的单位有:
- 国际单位制(SI)
- 美国单位(默认)
- 加拿大单位
- 英国单位
- 自动(使用您请求天气数据位置的本地区域单位)
关于每个属性的单位的更多详细信息请参见Dark Sky API文档。
您还可以选择希望Forecast
响应使用的语言。
client.language = .english
支持许多语言(完整列表见此处)。如果没有指定语言,则默认使用英语。
使用DarkSkyClient
,您可以发出两种类型的请求。第一种类型将获取特定位置的当前Forecast
。
let myLoc = CLLocationCoordinate2D(latitude: myLat, longitude: myLon)
client.getForecast(location: myLoc) { result in
switch result {
case .success(let currentForecast, let requestMetadata):
// We got the current forecast!
case .failure(let error):
// Uh-oh. We have an error!
}
}
第二种类型的请求被称为时间机请求,它将获取特定位置特定时间的Forecast
。
let myLoc = CLLocationCoordinate2D(latitude: myLat, longitude: myLon)
client.getForecast(location: myLoc, time: myTime) { result in
switch result {
case .success(let forecast, let requestMetadata):
// We got the forecast!
case .failure(let error):
// Uh-oh. We have an error!
}
}
您收到的Forecast
将包含元数据以及相关的DataPoint
和DataBlock
。例如,在Forecast
上的currently
属性代表在特定时间发生的各种天气现象。例如,在Forecast
上的minutely
、hourly
和daily
属性代表在一段时间内发生各种天气现象,并以一个DataPoint
数组表示。
DataPoint
和DataBlock
包含大量信息,您可以通过getForecast
方法的excludeFields
参数从API响应中排除任何这些字段。excludeFields
是可选的,默认为空数组,表示不会从API响应中排除任何数据。或者,如果您需要更多数据,可以将getForecast
方法的extendHourly
参数设置为true
,使Forecast
上的hourly
属性返回整个一周的每小时数据而不是24小时。extendHourly
是可选参数,默认为false
。在时间机请求中不支持extendHourly
。
有关所有模型上定义的所有属性的完整列表,请参阅CocoaDocs上的完整文档。
作者
萨蒂亚姆·戈达萨拉,[email protected],@_Satyam_
许可证
ForecastIO可在MIT许可证下使用。有关更多信息,请参阅LICENSE
文件。