版本 1.1
当前可用
平台 | 版本 |
---|---|
iOS | 12.0 |
tvOS | 10.0 |
macOS | 10.15 |
watchOS | 3.0 |
macCatalyst | 13.0 |
Hover 是一个使用 Apple 的新框架 Combine
的网络层,它提供了异步网络调用和不同类型请求函数。
何时以及为什么使用
使用 Hover 的主要优势是尽可能多地将网络层抽象化,并从您的项目中去除冗余代码。众所周知,Apple
宣布了一个名为 Combine
的新框架,主要目的是提供处理时间上值的声明性 Swift API。这些值可以表示许多类型的异步事件,因此网络调用是最重要的异步事件,实际上需要支持 Combine
来防止和整合 Apple 的原生框架。您不应该使用 Hover 的情况是当您没有那么多网络调用,以及不复杂的数据流需要跟踪哪种情况,也就是说,您没有 UI 的状态时则不要使用它。:)
Cocoapods 安装
target 'MyApp' do
pod 'HoverKitSDK', "~> 1.1"
end
Carthage 安装
github "onurhuseyincantay/Hover" ~> 1.1
Swift Package Manager 安装
包 | 分支 |
---|---|
![]() |
![]() |
示例用法
提供目标
enum UserTarget {
case login(email: String, password: String)
}
extension UserTarget: NetworkTarget {
var path: String {
switch self {
...
}
var providerType: AuthProviderType {
...
}
var baseURL: URL {
...
}
var methodType: MethodType {
switch self {
...
}
}
var contentType: ContentType? {
switch self {
...
}
}
var workType: WorkType {
switch self {
...
}
}
var headers: [String : String]? {
...
}
}
与发布者请求
let provider = Hover()
let publisher = provider.request(
with: UserTarget.login(email: "[email protected]", password: "123456"),
scheduler: DispatchQueue.main,
class: UserModel.self
)
...
publisher.sink({ ... })
与订阅者请求
let provider = Hover()
let userSubscriber = UserSubscriber()
provider.request(with: UserTarget.login(email: "[email protected]", password: "123456"), class: UserModel.self, subscriber: userSubscriber)
在JsonPlaceholder上进行测试;受Moya启发;使用如下: