点点

CI Status Version License Platform

banner

示例

要运行示例项目,请克隆存储库,并首先从 Example 目录运行 pod install

要求

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理工具。 您可以使用以下命令安装它

$ gem install cocoapods

需要 CocoaPods 1.1+ 才能构建 StorageManager。

要使用 CocoaPods 将 StorageManager 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Dots'
end

然后,运行以下命令

$ pod install

Carthage

Carthage 是一个去中心化的依赖管理工具,可以构建您的依赖项并为您提供二进制框架。

您可以使用 Homebrew 使用以下命令安装 Carthage

$ brew update
$ brew install carthage

要使用 Carthage 将 StorageManager 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "iAmrSalman/Dots" ~> 0.5.0

运行 carthage update 来构建框架,并将构建的 Dots.framework 拖到您的 Xcode 项目中。

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码分发的工具,并且已集成到 swift 编译器中。 它处于早期开发阶段,但 StorageManager 确实支持在支持的平台上使用它。

设置好 Swift 包后,将 StorageManager 添加为依赖项就像将其添加到 Package.swiftdependencies 值一样容易。

dependencies: [
    .package(url: "https://github.com/iAmrSalman/Dots.git", from: "0.5.0")
]

用法

发起请求

import Dots

Dots.defualt.request("<URL>") { (dot: Dot) in
    
  print(dot.response) // HTTP URL response
  print(dot.data)     // server data
  print(dot.error)    // Errors from request processing
  print(dot.json)     // JSON dictionary [String: Any]

}

HTTP 方法

HTTPMethod 枚举列出了 HTTP 方法

public enum HTTPMethod: String {
  case options = "OPTIONS"
  case get     = "GET"
  case head    = "HEAD"
  case post    = "POST"
  case put     = "PUT"
  case patch   = "PATCH"
  case delete  = "DELETE"
  case trace   = "TRACE"
  case connect = "CONNECT"
}

这些值可以作为 method 参数传递给 request 函数

Dots.defualt.request("<URL>") // method defaults to `.get`
Dots.defualt.request("<URL>", method: .post)
Dots.defualt.request("<URL>", method: .put)
Dots.defualt.request("<URL>", method: .delete)

request 方法参数默认为 .get

参数编码

带有 URL 编码参数的 GET 请求

let parameters: Parameters = ["foo": "bar"]

Dots.defualt.request("<URL>", parameters: parameters) // defaults url encoding
Dots.defualt.request("<URL>", parameters: parameters, encoding: .url)

// <URL>?foo=bar

带有 URL 编码参数的 POST 请求

let parameters: Parameters = [
  "foo": "bar",
  "baz": ["a", 1],
  "qux": [
    "x": 1,
    "y": 2,
    "z": 3
  ]
]

Dots.defualt.request("<URL>", method: .post, parameters: parameters) // defaults url encoding
Dots.defualt.request("<URL>", method: .post, parameters: parameters, encoding: .url)

//httpHeader: Content-Type: application/x-www-form-urlencoded; charset=utf-8

// HTTP body: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3

带有 JSON 编码参数的 POST 请求

let parameters: Parameters = [
  "foo": [1,2,3],
  "bar": [
    "baz": "qux"
  ]
]

Dots.defualt.request("<URL>", method: .post, parameters: parameters, encoding: .json)

//HTTP header: Content-Type: application/json

// HTTP body: {"foo": [1, 2, 3], "bar": {"baz": "qux"}}

HTTP 标头

全局 request 方法直接支持将自定义 HTTP 标头添加到 Request。 这使得将 HTTP 标头附加到 Request 变得容易。

let headers: HTTPHeaders = [
  "Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
  "Accept": "application/json"
]

Dots.defualt.request("<URL>", headers: headers)

并发

支持选择异步和同步

Dots.defualt.request("<URL>", concurrency: .async) // concurrency defaults to `.async`
Dots.defualt.request("<URL>", concurrency: .sync)

最大并发请求数

支持自定义同时执行的最大并发请求数。

默认情况下,如果设备使用蜂窝网络连接,则最大并发请求数限制为 2,而 Wi-Fi 最多执行 6 个并发请求。

let customDots = Dots(maxConcurrentOperation: <Int>)
customDots.request("<URL>") 

扩展

UIImageView

imageView.setImage(withURL: "<URL>")

作者

Amr Salman, iamrsalman@gmail.com

许可证

Dots 基于 MIT 许可证提供。 详情请参阅 LICENSE 文件。