平台 | 版本 |
---|---|
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 的原生框架。如果您没有那么多网络调用,也没有那么复杂的数据流需要跟踪(这意味着实际上您没有 UI 的状态),那么您不应该使用它。:)
target 'MyApp' do
pod 'HoverKitSDK', "~> 1.1"
end
github "onurhuseyincantay/Hover" ~> 1.1
包 | 分支 |
---|---|
![]() |
![]() |
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: "ohc3807@gmail.com", password: "123456"),
scheduler: DispatchQueue.main,
class: UserModel.self
)
...
publisher.sink({ ... })
let provider = Hover()
let userSubscriber = UserSubscriber()
provider.request(with: UserTarget.login(email: "ohc3807@gmail.com", password: "123456"), class: UserModel.self, subscriber: userSubscriber)
使用 JsonPlaceholder 进行测试,灵感来自 Moya,用 🧡 开发。