Cachable 1.2.1

Cachable 1.2.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2017年9月
SwiftSwift版本4.0
SPM支持SPM

Raul Riera维护。



Cachable 1.2.1

有关使用"Cacher"的详细信息,请参阅文章"在iOS中缓存任何内容"

安装

手动

Cacher/文件夹拖放到您的项目中。

如何使用

要快速查看TL;DR(话太多,不看),请查看位于CacherDemo的示例项目。它将引导您完成可能最简单的缓存,并持久化字符串值。

如果您想自己动手做,请继续阅读,我们将详细解释这是如何工作的。

public protocol Cachable {
	var fileName: String { get }
	func transform() -> Data
}

这全部取决于这个简单的协议,它只有两个要求:fileName表示在文件系统中存储的唯一名称,transform表示您希望导入的数据的表示。利用Swift 4的Codable的魔力,我们可以跳过transform的实现并使用显式声明的这里的隐式实现。

在实现了对CachableCodable的合规性后,我们可以使用persist:item:completion方法在文件系统中存储任何内容。

但是,让我们看看一个更复杂的示例

struct CachableMovies: Cachable, Codable {
	let store: String
	let movies: [Movie]

	var fileName: String {
		return "movies-\(store)"
	}

	init(store: String, movies: [Movie]) {
		self.store = store
		self.movies = movies
	}
}

struct Movie: Codable {
  enum CodingKeys : String, CodingKey {
  		case title = "movie_title"
  		case description = "movie_description"
  		case url = "movie_url"
  }

  let title: String
  let description: String
  let url: URL
}

上述代码就足以将电影集合存储到文件系统中。🎉现在我们可以简单地这样使用persist方法。

Cacher(destination: .temporary).persist(item: CachableMovies(store: "USA", movies: myArrayOfMovies)) { url, error in
	// Completion handler when the process finishes
}

创建者

Raul Riera,@raulriera