版本 1.1

apmCocoaPods compatible Carthage compatible Swift Package Manager compatible Swift

当前可用

平台 版本
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 的状态),那么您不应该使用它。:)

Cocoapods 安装

target 'MyApp' do
  pod 'HoverKitSDK', "~> 1.1"
end

Carthage 安装

github "onurhuseyincantay/Hover" ~> 1.1

Swift Package Manager 安装

分支

示例用法

提供 Target

 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]? {
        ...
    }
 }

使用 Publisher 请求

let provider = Hover()
let publisher = provider.request(
            with: UserTarget.login(email: "ohc3807@gmail.com", password: "123456"),
            scheduler: DispatchQueue.main,
            class: UserModel.self
        )
...
publisher.sink({ ... })

使用 Subscriber 请求

let provider = Hover()
let userSubscriber = UserSubscriber()
provider.request(with: UserTarget.login(email: "ohc3807@gmail.com", password: "123456"), class: UserModel.self, subscriber: userSubscriber)

使用 JsonPlaceholder 进行测试,灵感来自 Moya,用 🧡 开发。