FireCache 0.2.0

FireCache 0.2.0

Jitendra Gandhi 维护。



FireCache 0.2.0

FireCache

一个 Swift 网络库

FireCache 是一个在 Swift 中通过 HTTP 获取和缓存图片、JSON、字符串的网络库,它灵活且可扩展到自定义类型。

特性

  • 内存缓存。
  • 非阻塞 I/O。所有 HTTP 和 I/O 都在后台执行。
  • 完全泛型。
  • 为 UIImageView 添加远程图片的简单扩展方法。
  • 健壮、快速和高度可定制。
  • 简单、易于理解且简洁的代码库。
  • 智能处理重复的图片请求。

要求

至少需要 iOS 8 或更高版本。

安装

CocoaPods

FireCache需要CocoaPods 1.1.x或更高版本。

FireCache可以通过CocoaPods获取。CocoaPods安装,只需在Podfile中添加以下行:

pod 'FireCache'

示例

首先导入框架。

import FireCache

导入后,就可以开始请求图像了。

//you can simply call the URL string on your UIImageView
let imageUrl = URL(string: "https://www.example.com/sample.png")!
let imageView = UIImageView(frame: CGRectMake(0, 0, 200, 200))
self.imageView.setImage(with: imageUrl)

//Fetch image using the FireCache Image Manager
FireImageManager.shared.fetch(with: url) { (image, url, error) in
  //Returns `url`
  //Returns either of `image` or `error`
}

使用FireCache下载JSON

使用默认JSON管理器。

FireJSONManager.shared.fetch(with: url) { (json, url, error) in
  //Returns `url`
  //Returns either of `json` or `error`
}

取消请求

在需要时可以取消获取的请求。这会导致回调被调用并抛出错误,错误代码为NSURLErrorCancelled

let downloadTask = self.imageView.setImage(with: imageUrl)
downloadTask?.cancel()

使用FireManager下载自定义类型

您可以使用FireCache为缓存创建自己的类型。让我们以新的类型ZIP为例。

//Extend you type with `Cacheable` protocol
extension ZIP: Cacheable {
  public typealias Object = ZIP
  public static func convertFromData(_ data: Data) throws -> ZIP {
  guard let zip = ZIP(data: data) else { throw FireError.invalidData }
    return zip
  }
}

let fireZIPManager = FireManager<ZIP>()
fireZIPManager.fetch(with: url) { (zip, url, error) in
  //Returns `url`
  //Returns either of `zip` or `error`
}

优先处理任务

let task1 = fireManager.fetch(with: url) { (file, url, error) in }
let task2 = fireManager.fetch(with: url) { (file, url, error) in }
let task3 = fireManager.fetch(with: url) { (file, url, error) in }

task1?.priority = 0.2
task2?.priority = 0.5
task3?.priority = 1.0

许可

FireCache 采用 MIT 开源许可证。

联系

Jitendra Gandhi

一个不成熟的程序员

在 Beerpay 上支持

嘿,兄弟!帮帮我几个🍻!

Beerpay Beerpay