数据存储管理器
数据存储管理器是一个用Swift编写的持久化数据框架,并且可以使用Objective-C。
用法
import DataStoreManager
class ViewController: UIViewController {
let manager = DataStoreManager(identifier: "Example")
func fetchFromDataStore() {
manager.read(forKey: "Age", withObjectType: Int.self, forType: .userDefaults) { (object, _, _) in
if let object = object {
print("successfully read int \(object) from UserDefaults")
}
}
manager.read(forKey: "Balance", withObjectType: Decimal.self, forType: .genericKeychain) { (object, _, _) in
if let object = object {
print("successfully read decimal \(object) from Generic Keychain")
}
}
manager.read(forKey: "temp_file.txt", withObjectType: String.self, forType: .temporaryDirectory) { (object, _, _) in
if let object = object {
print("successfully read string \(object) from /tmp")
}
}
manager.read(forKey: "Image", withObjectType: UIImage.self, forType: .cache) { (object, _, _) in
if let object = object {
print("successfully read image \(object) from NSCache")
}
}
}
func storeToDataStore(object: Any) {
manager.create(object: object, forKey: "Text", forType: .userDefaults) { (isSuccessful, _, _) in
if isSuccessful {
print("successfully create object at UserDefaults")
}
}
manager.update(object: object, forKey: "Text", forType: .genericKeychain) { (isSuccessful, _, _) in
if isSuccessful {
print("successfully update object at Generic Keychain")
}
}
manager.create(object: object, forKey: "Inbox/file.txt", forType: .documentDirectory) { (isSuccessful, _, _) in
if isSuccessful {
print("successfully create file at Inbox Document Directory")
}
}
let exampleModel = DynamicModel(name: "Text", number: 123)
manager.create(object: exampleModel, forKey: "column_name", forType: .privateCloudDatabase) { (isSuccessful, recordID, _) in
if isSuccessful {
print("successfully create model at CloudKit Private Database with ID \(recordID)")
}
}
}
}
可用的存储类型
/// UserDefaults
.userDefaults
/// FileManager (~/Documents)
.documentDirectory
/// FileManager (/Users)
.userDirectory
/// FileManager (/Library)
.libraryDirectory
/// FileManager (/Applications)
.applicationDirectory
/// FileManager (/System/Library/CoreServices)
.coreServiceDirectory
/// FileManager (/tmp)
.temporaryDirectory
/// NSCache
.cache
/// Keychain (kSecClassGenericPassword)
.genericKeychain
/// Keychain (kSecClassInternetPassword)
.internetKeychain
/// CoreData
.coreData
/// CKContainer (.privateCloudDatabase)
.privateCloudDatabase
/// CKContainer (.publicCloudDatabase)
.publicCloudDatabase
/// CKContainer (.sharedCloudDatabase)
.sharedCloudDatabase
/// NSUbiquitousKeyValueStore
.ubiquitousCloudStore
先决条件
- iOS 8.0+
- macOS 10.10+
- watchOS 2.0+
- tvOS 9.0+
- Xcode 10.2+
安装
Carthage
要安装它,请将以下行添加到您的Cartfile
github "zaidmsaid/DataStoreManager"
然后运行carthage update
。
有关最新安装说明,请参阅Carthage的README。
CocoaPods
要安装它,只需将以下行添加到您的 Podfile
pod "DataStoreManager"
同时确保您已选择使用框架
use_frameworks!
然后使用 CocoaPods 1.6.0 或更高版本运行 pod install
Swift Package Manager
要安装它,只需将以下行添加到您的 Package.swift
dependencies: [
.package(url: "https://github.com/zaidmsaid/DataStoreManager.git", .upToNextMinor(from: "0.9.3"))
]
或者更严格
dependencies: [
.package(url: "https://github.com/zaidmsaid/DataStoreManager.git", .exact("0.9.3"))
]
然后运行 swift package update
Git Submodule
要将 DataStoreManager 安装到您的项目中,请按照以下步骤操作
- 通过打开终端,
cd
到您的顶级项目目录,并输入命令git submodule add https://github.com/zaidmsaid/DataStoreManager.git
将 DataStoreManager 作为 子模块 添加 - 打开
DataStoreManager
文件夹,并将DataStoreManager.xcodeproj
拖动到您的应用程序项目的文件导航器中。 - 在 Xcode 中,通过单击左侧边栏中的蓝色项目图标,转到目标配置窗口,并在“Target”标题下选择应用程序目标。
- 确保
DataStoreManager.framework
的部署目标与应用程序目标相匹配。 - 在窗口顶部的标签栏中,打开“Build Phases”面板。
- 展开“Link Binary with Libraries”组,并添加
DataStoreManager.framework
。 - 单击面板左上角的
+
按钮,选择“New Copy Files Phase”。将此新阶段重命名为“Copy Frameworks”,将“Destination”设置为“Frameworks”,并添加DataStoreManager.framework
。
文档
在使用 DataStoreManager 时遇到麻烦?请查看我们的 文档。
开发技术
贡献
请阅读 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md 了解我们的行为准则和提交 pull requests 的流程。
版本控制
我们使用 SemVer 进行版本控制。有关可用版本,请参阅 仓库的标签。
作者
- Zaid M. Said - 初步工作 - @SentulAsia
还可以查看参与这个项目的 贡献者列表。
许可
本项目采用Apache License, Version 2.0许可 - 有关详细信息,请参阅LICENSE文件。
致谢
- 感谢所有使用了代码的人士