KeyValueStorage 2.0.1

KeyValueStorage 2.0.1

Ricardo Rauber Pereira 维护。



  • 作者:
  • Ricardo Rauber Pereira

KeyValueStorage - 为Swift项目提供键值存储模块

Build Status CocoaPods Version License Platform

此模块是对Keychain、UserDefaults、Memory(字典)等键值存储框架的超轻量级封装。

  • Keychain
  • 用户默认设置
  • 内存(字典)

它使用起来非常简单,例如,使用Keychain:

import KeyValueStorage
let myKey = KeyValueStorageKey(type: .keychain, value: "myKey")
let storage: KeyValueStorageProtocol = KeyValueStorage()
storage.set(value: "something awesome!", for: myKey)
let value: String? = storage.get(key: myKey)
print(value)

好看,是吧?其他模块如何呢?嗯,您可以为任何存储类型轻松创建键。

let keychainKey = KeyValueStorageKey(type: .keychain, value: "myKey")
let defaultsKey = KeyValueStorageKey(type: .defaults, value: "myKey")
let memoryKey = KeyValueStorageKey(type: .memory, value: "myKey")

为什么?

您可能会问,为什么还需要另一个用于此类功能的框架?这是因为所有的存储框架都集成在一起?不,不仅仅是因为这个原因。实际上,这个框架有一个更伟大的目的,它完全基于KeyValueStorageProtocol,这为您的应用程序提供了可测试性。这样做的方式是使用协议作为参数和属性,这样您就可以注入不同行为的依赖关系。您可以使用包中的一个或实现一个模拟以避免测试中出现某些问题,例如。

设置

CocoaPods

如果您正在使用CocoaPods,请将其添加到Podfile中并运行pod install

target 'Your target name' do
    pod 'KeyValueStorage', '~> 2.0'
end

手动安装

如果您想在项目中以手动方式添加此项,不使用包管理器,只需将“Classes”文件夹中的所有文件复制到您的项目中。

使用方法

import KeyValueStorage 添加到您的源代码中。

存储值

KeyValueStorageProtocol 支持任何类型的 Codable 值,因此您可以将它们用作您想要的任何存储类型中的数据存储

storage.set(value: 10, for: myKey)
let intValue: Int? = storage.get(key: myKey)

storage.set(value: "abc", for: myKey)
let stringValue: String? = storage.get(key: myKey)

从存储中删除键

storage.remove(key: myKey) // Removes a single key
storage.clean(type: .memory) // Removes all keys from the given storage type
storage.cleanAll() // Removes all keys from all storage types

KeyValueStorageKey

为了创建键,我们使用这个名为 KeyValueStorageKey 的特殊对象。如您所见,它非常简单

public struct KeyValueStorageKey: Equatable, Hashable {
    
    // MARK: - Properties
    
    public let type: KeyValueStorageType
    public let value: String
    
    // MARK: - Initialization
    
    public init(type: KeyValueStorageType, value: String) {
        self.type = type
        self.value = value
    }
}

您可以通过添加到 KeyValueStorageKey 的扩展中的静态属性来扩展它,从而无需在所有地方使用硬编码的字符串来使用存储。您只需在扩展中添加一个静态属性,然后使用自动完成功能使用它即可

extension KeyValueStorageKey {
	static let myKey = KeyValueStorageKey(type: .memory, value: "myKey")
}

storage.set(value: "abcde", for: .myKey)
let value: String? = storage.get(key: .myKey)

这样我们就可以安全地在应用程序中重复使用键,在本地框架中甚至更好,因为您可以为每个创建内部扩展。

感谢👍

这个框架的创建得以实现,归功于这些杰出的人们。

欢迎反馈

如果您发现任何问题、遇到了困难或只是想聊天,请随意创建一个问题。我们将很高兴帮助您。

许可证

KeyValueStorage是在MIT许可证下发布的。