YTTCache

GitHub release
iOS 开发中经常会用到本地存储,加之最近在了解组件化,所以对本地存储这块做了组件化处理,且在完善中…

YTTCache

使用 SQLite3 对数据进行存储,采用键值对形式存储数据.
使用 SQLite.swift 进行数据库操作.

Installation

YTTCache 可以通过 CocoaPods 安装. 只需要在你的 Podfile 添加:

1
pod 'YTTCache'

Usage

采用 SQLite3 进行存储,表格有5个字段: id, cache_data, cache_key, cache_time, cache_data_MD5.

  • id: 数据唯一标识.
  • cache_data: 需要缓存数据,采用 Data 数据类型,对应数据库 Blob 类型.
  • cache_key: 数据对应的 key, 对字符串 MD5 的值.
  • cache_time: 添加/修改数据的时间(时间戳).
  • cache_data_MD5: 缓存数据的 MD5 值,查询时校验使用.

YTTDataBase

基础类,通过 SQLite.swift 对数据库进行操作,实现了添加,修改,查询,删除操作.

YTTCache

缓存操作的主要操作类,实现了添加,修改,查询,删除操作(主要针对 String 与 Data).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class YTTCache

/// 缓存数据
///
/// - Parameters:
/// - value: 字符串
/// - key: 键值
/// - Returns: 是否缓存成功
public class func storeString(_ value: String, key: String) -> Bool


/// 缓存数据
///
/// - Parameters:
/// - value: Data
/// - key: 键值
/// - Returns: 是否缓存成功
public class func storeData(_ value: Data, key: String) -> Bool


/// 更新缓存数据
///
/// - Parameters:
/// - value: 字符串
/// - key: 键值
/// - Returns: 是否更新成功
public class func updateStoreString(_ value: String, key: String) -> Bool


/// 更新缓存数据
///
/// - Parameters:
/// - value: data
/// - key: 键值
/// - Returns: 是否更新成功
public class func updateStoreData(_ value: Data, key: String) -> Bool


/// 获取缓存信息
///
/// - Parameter key: 键值
/// - Returns: 获取到的 Data
public class func dataForKey(_ key: String, timeoutIntervalForCache interval: TimeInterval = .greatestFiniteMagnitude) -> Data?


/// 获取缓存信息
///
/// - Parameter key: 键值
/// - Returns: 获取到的字符串
public class func stringForKey(_ key: String, timeoutIntervalForCache interval: TimeInterval = .greatestFiniteMagnitude) -> String?


/// 清除某条数据
///
/// - Parameter key: 键值
/// - Returns: 是否清除成功
public class func removeCacheByKey(_ key: String) -> Bool


/// 清除缓存
///
/// - Returns: 是否清除成功
public class func cleanCache() -> Bool

YTTRequestCache

基于 YTTCache 实现,缓存数据为 JSON 字符串, key 值通过 url 与参数生成.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class YTTRequestCache

/// 缓存请求结果 JSON 数据
///
/// - Parameters:
/// - jsonStr: JSON 字符串
/// - url: 请求 URL 地址
/// - param: 请求参数
/// - Returns: 是否缓存成功
public class func storeJSONString(_ jsonStr: String, url: String, param: [String: Any]) -> Bool


/// 获取缓存 JSON 数据
///
/// - Parameters:
/// - url: 请求 URL 地址
/// - param: 请求参数
/// - timeoutIntervalForCache: 缓存时间(以秒为单位),默认永久
/// - Returns: 缓存 JSON 字符串,没有返回 nil
public class func JSONStringForKey(url: String, param: [String: Any], timeoutIntervalForCache interval: TimeInterval = .greatestFiniteMagnitude) -> String?


/// 删除某条 JSON 数据
///
/// - Parameters:
/// - url: 请求 URL 地址
/// - param: 请求参数
/// - Returns: 是否删除成功
public class func removeJSONStringForKey(url: String, param: [String: Any]) -> Bool

Extension

对常用一些类进行扩展,方便数据缓存操作.(eg: 取: String.initWithCache(“students”) 保存: “students”.cache.storeWithKey(“students”))

StringExtension

UIImageExtension

DictionaryExtension

ArrayExtension