UserCaches
类似iOS平台上的UserDefaults
的键值存储缓存工具。
使用方法
常规使用
类似于UserDefaults
// Save cache.
let intVal = 123
try UserCaches.standard.set(intVal, forKey: key)
// Get cache. Specify the type('Int') to decide generic type.
let cache: Int = try UserCaches.standard.value(forKey: key)
UserCaches.standard
是UserCaches的全局实例。
还可以创建新的实例
let cacheHelper = try UserCaches(cachePath: URL(fileURLWithPath: "/tmp/usercache.db"))
高级使用
然而,我建议使用以下方法。 (例如:设置百度应用)
import UserCaches
struct User: Codable {
let id: Int64
let name: String
}
enum ComBaiduMobileUserSetting: String, UserCachesSettable {
/// 隐私设置 - 允许通过手机号搜索到我
case privacy_findMeByPhoneNumber
/// 隐私设置 - 可通过感兴趣的人找到我
case privacy_findMeByInteresting
/// 隐私设置 - 开启通讯录关联
case privacy_relateAddressList
/// 隐私设置 - 黑名单
case privacy_blacklist
/// 字体大小
case font_size
var identifierMode: CacheKeyMode { return .identifier }
}
// Save caches
ComBaiduMobileUserSetting.privacy_findMeByPhoneNumber.storage = true
ComBaiduMobileUserSetting.privacy_findMeByInteresting.storage = false
ComBaiduMobileUserSetting.privacy_relateAddressList.storage = false
ComBaiduMobileUserSetting.privacy_blacklist.storage = [CacheCodability(User(id: 100120054,
name: "abc"))]
ComBaiduMobileUserSetting.font_size.storage = 20
// Get caches
let isFindMeByPhoneNumber: Bool? = ComBaiduMobileUserSetting.privacy_findMeByPhoneNumber.value()
let isFindMeByInteresting: Bool? = ComBaiduMobileUserSetting.privacy_findMeByInteresting.value()
let isRelateAddressList: Bool? = ComBaiduMobileUserSetting.privacy_relateAddressList.value()
let blacklist: [CacheCodability<User>] = ComBaiduMobileUserSetting.privacy_blacklist.value()
let fontSize: Int = ComBaiduMobileUserSetting.font_size.value() ?? 16
如果您将identifierMode
设置为CacheKeyMode.identifier
,则
如上所述
"ComBaiduMobileUserSetting" => "com.baidu.mobile.user.setting"
"privacy_findMeByPhoneNumber" => "privacy.findMeByPhoneNumber"
将case privacy_findMeByPhoneNumber
转换为com.baidu.mobile.user.setting.privacy.findMeByPhoneNumber
,作为键,在此示例中与true
关联。
默认支持类型
默认支持UseCaches
默认支持类型 |
---|
布尔型 |
整型,Int64,无符号整型,Uint64 |
浮点型,Double |
字符串,Data |
日期(通过TimeInterval实现) |
CacheCodable类型的数组 |
键和值都是CacheCodable类型的字典 |
CacheCodability |
特别是,如果struct(或class)依赖于Codable
,使用CacheCodability封装struct(或class),UserCaches也接受它。参见上面的CacheCodability
安装
注意:UserCaches需要Swift 4.1和Xcode 9.3及以上。
CocoaPods
CocoaPods是Cocoa项目的依赖管理器。要使用CocoaPods安装UserCaches
-
确保CocoaPods已经安装。(UserCaches需要版本1.0.0或更高。)
# Using the default Ruby install will require you to use sudo when # installing and updating gems. [sudo] gem install cocoapods
-
更新你的Podfile,包括以下内容
use_frameworks! target 'YourAppTargetName' do pod 'UserCaches', '~> 0.0.1' end
-
运行
pod install --repo-update
。
Swift Package Manager
Swift Package Manager是管理Swift代码分发的一个工具。
- 将以下内容添加到你的
Package.swift
文件中
dependencies: [
.package(url: "https://github.com/CUITCHE/UserCaches.git", from: "0.0.3")
]
- 构建你的项目
$ swift build
如何测试
- 克隆此仓库。
- 进入仓库目录。
- 执行
swift test
指令。
作者
许可
UserCaches遵循MIT许可。