CodableCache 0.2.2

CodableCache 0.2.2

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

Macbook 维护。





Platforms
Languages
Carthage compatible
Cocoapods compatible
License

📦📲CodableCache

什么是 CodableCache?它是一个框架,允许对您的普通 Swift 结构体进行无缝的内存缓存和磁盘持久化。只需定义一个模型并使它符合 Codable – 您就可以使用 CodableCache 了。

📋🧐 功能

  • 简单易用的基于键和泛型类型的透明缓存
  • 任何符合 Codable 的内容都能自动工作
  • 除了可选的自定义 Codable 编码/解码器外,无需编写序列化器
  • 通过可编码包装器与图像一起使用
  • 易于集成到现有工作流程中
  • 由经过战斗检验的 NSCache 和 NSKeyedArchiver 支持
  • 包含电池 - 默认情况下,您必须自己创建工作流程和处理缓存错误

🎓📕一些历史

Codable Cache 是我之前的 LeanCache 框架的一个简易替代品,它通过指定符合 NSCoding 的泛型类型来进行支持。它提供了如 let x: NSNumber? = Cache("some interesting key") 这样的工作流程,这仍然很好,但是编写 NSCoding 序列化器是个头疼的问题。因此,诞生了 CodableCache

👩‍💻👨‍💻示例代码

要开始使用,只需导入 CodableCache,定义一个符合 codable 的模型,并开始编程。以下是一些使用 CodableCache 的几个示例。

创建一个由持久缓存支持的 person 管理器

import CodableCache

struct Person: Codable {
    let name: String
    let age: Double // kids are half ages if you recall 😜
}

final class PersonManager {

    let cache: CodableCache<Person>

    init(cacheKey: AnyHashable) {
        cache = CodableCache<Person>(key: cacheKey)
    }

    func getPerson() -> Person? {
        return cache.get()
    }

    func set(person: Person) throws {
        cache.set(value: person)
    }


}

然后可以像这样使用它
let personManager = PersonManager(cacheKey: "myPerson")

try? personManager.set(value: MyPerson)

if let person = personManager.get() {
    print(person.age)
}

自信地缓存 JSON

import CodableCache

//...

struct TestData: Codable {
  let testing: [Int]
}

func saveJSON() {

    let json = """
        {
            "testing": [
                1,
                2,
                3
            ]
        }
    """

    guard let data = json.data(using: .utf8) else {
        return
    }

    let decodedTestData: TestData
    do {
        decodedTestData = try decoder.decode(TestData.self, from: data)
        try codableCache.set(value: decodedTestData)
    } catch {
        // do something else
        return
    }
}

获取用于后续使用的已缓存 JSON

import CodableCache


final class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

    let appSettings = CodableCache<Settings>(key: "com.myApp.settings")

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        if let settings = appSettings.get() {
            doSomethingUseful(with: settings)
        }

        return true
    }

    // ...
}

指定不同的存储目录

import CodableCache

struct Person: Codable {
    let name: String
    let age: Double
}

// this data will not be purged by the system like .cachesDirectory would
let persistentPersonStorage = CodableCache<Person>(key: "myPerson", directory: .applicationSupportDirectory)

创建一个泛型缓存

import CodableCache

final class GenericCache<Cacheable: Codable> {

    let cache: CodableCache<Cacheable>

    init(cacheKey: AnyHashable) {
        self.cache = CodableCache<Cacheable>(key: cacheKey)
    }

    func get() -> Cacheable? {
        return self.cache.get()
    }

    func set(value: Cacheable) throws {
        try self.cache.set(value: value)
    }

    func clear() throws {
        try self.cache.clear()
    }
}
然后可以像这样使用它
let myCache = GenericCache<MyType>(cacheKey: String(describing: MyType.self))

👩‍🔬 👨‍🎨理念

通常,我们可以使用像 CoreData、Realm 或 SQLite 这样的重量级工具,但这通常是过度杀伤。更常见的情况是我们只是基于一些 JSON 接口将一些本地状态进行备份 - 使用飞船在街区散步🚀. 通常,如果数据不是过时的,我们就向用户展示这些数据,如果需要,则从网络更新这些数据。排序和重新排列通常是服务器端的任务,所以关系型数据库和对象图可能过于昂贵,从起步建模到管理时间。通过 CodableCache,我们采用不同的方法,允许您快速定义模型,跳过样板和序列化器,并开始以闪电般的速度保存您的数据。

💻 🚀安装

Cocoapods

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

$ gem install cocoapods

CodableCache 需要 CocoaPods 1.1+ 来构建。

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

use_frameworks!

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

然后,运行以下命令

$ pod install

Carthage

Carthage是一个去中心化的依赖管理器,它构建您的依赖项并提供二进制框架。

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

$ brew update
$ brew install carthage

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

github "asowers1/CodableCache" "master"

运行

carthage update

在您的应用程序的目标中,在“通用”选项卡下的“链接框架和库”部分,从由carthage update生成的 Carthage/Build/iOS 目录中拖放 CodableCache-iOS.framework。

Swift 包管理器

Swift 包管理器是一个用于自动分发 Swift 代码的工具,并集成到 swift 编译器中。它处于早期开发阶段,但 Alamofire 支持其在支持平台上的使用。

一旦您设置了 Swift 包,将 CodableCache 添加为依赖项就像将它添加到您的 Package.swiftdependencies 值一样简单。

dependencies: [
    .Package(url: "https://github.com/asowers1/CodableCache.git")
]

🙋 🙋‍♂️贡献

请随意提交问题或拉取请求 – 我会很乐意提供帮助。

👩‍🔧 👨‍🔧作者和贡献者

Andrew Sowers

Joe Fabisevich