HPDarkSky 1.2.0

HPDarkSky 1.2.0

Henrik Panhans 维护。



HPDarkSky 1.2.0

Build Status codebeat badge Swift Version codecov

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上找到我