HPDarkSky 是一个跨平台的 Swift 框架,用于从 Dark Sky 的 JSON API 中获取天气数据。有关详细信息,请参阅他们的 文档。
要安装 HPDarkSky,可以单击“文件”->“Swift 包”->“添加包依赖关系”来直接通过 Xcode 项目添加此存储库的 URL,或者如果您喜欢通过 CocoaPods 进行安装,只需在 Podfile
中添加 pod HPDarkSky
即可。
部署目标 | 操作系统版本 |
---|---|
iOS | 9.0+ |
watchOS | 3.0+ |
macOS | 10.13+ |
tvOS | 9.0+ |
要开始,你需要从 Dark Sky 获取 API 密钥(在此处 注册,注意:苹果公司最近收购了 Dark Sky,他们不再接受新的注册)。然后设置您的 API 密钥如下:
import HPDarkSky
// Use singleton
HPDarkSky.shared.secret = "YOUR_APIKEY"
// Or custom init
let api = HPDarkSky(secret: "YOUR_APIKEY", language: ..., units: ...)
有关支持的语言列表,请参阅 Dark Sky 网站。
发出请求
let location = CLLocationCoordinate2D(latitude: 12.231, longitude: 69.420)
HPDarkSky.shared.requestWeather(forLocation: location, exlcudedFields: [.hourly]) { result in
// Evaluate result here
}
注意:HPDarkSky会自动验证传入的位置(因为你可以用任何Double
值初始化CLLocationCoordinate2D
),以防止你发出返回错误的请求。
独立的请求对象
你还可以使用以下方式初始化一个独立的请求对象,以便与你的自定义URLSession
一起使用:
let location = CLLocationCoordinate2D(latitude: 12.231, longitude: 69.420)
let request = DarkSkyRequest(secret: "YOUR_APIKEY", location: location)
// URLSession extension included
URLSession.shared.dataTask(with: request) { data, response, error in
// Do your thing here
}
可排除的字段
ExcludableFields
是一个枚举,你可以将其传递给API或请求对象,以告知API应该从响应中省略数组中的字段。你可以使用此来减少使用的带宽,例如,在你只对某些数据感兴趣,而不对整个集感兴趣的情况下。
时间机器
你也可以向API或请求对象传递一个可选的Date
对象,这将返回过去(从1970年UTC午夜开始,你知道这个过程)或未来那个点的数据。
注意:时区仅用于确定请求的时间;响应将始终相对于本地时区。
TODO
[x] 完成 API 接口
[X] 添加单元测试
[ ] 达到 100% 测试覆盖率
[ ] 添加单位转换方法
Henrik Panhans 2019,你可以在Twitter上找到我