KeyValueStorage - 为Swift项目提供键值存储模块
此模块是对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)
这样我们就可以安全地在应用程序中重复使用键,在本地框架中甚至更好,因为您可以为每个创建内部扩展。
👍
感谢这个框架的创建得以实现,归功于这些杰出的人们。
- Gray公司: https://www.graycompany.com.br/
- Swift by Sundell: https://www.swiftbysundell.com/
- Hacking with Swift: https://www.hackingwithswift.com/
- KeychainSwift: https://github.com/evgenyneu/keychain-swift
- Ricardo Rauber: http://ricardorauber.com/
欢迎反馈
如果您发现任何问题、遇到了困难或只是想聊天,请随意创建一个问题。我们将很高兴帮助您。
许可证
KeyValueStorage是在MIT许可证下发布的。