_____ _ __ _ _____ _____ _
/ ____| (_)/ _| | | __ \ / ____| |
| (_____ ___| |_| |_| |__) |____ _____ _ _| (___ | |_ ___ _ __ __ _ __ _ ___
\___ \ \ /\ / / | _| __| ___/ _ \ \ /\ / / _ \ '__\___ \| __/ _ \| '__/ _` |/ _` |/ _ \
____) \ V V /| | | | |_| | | (_) \ V V / __/ | ____) | || (_) | | | (_| | (_| | __/
|_____/ \_/\_/ |_|_| \__|_| \___/ \_/\_/ \___|_| |_____/ \__\___/|_| \__,_|\__, |\___|
__/ |
|___/
CoreData + Codable 的强大功能,创建一个简单而强大的存储包。
使用以下 URL 将包添加到 Xcode
https://github.com/CodeNationDev/SwiftPowerStorage.git
public class SPSManager: NSObject
保存
public func saveParameter<T: Codable>(forKey: String, object: T, completionHandler: ((Bool, T?)->(Void))? = nil)
加载
public func loadParameter<T:Codable>(forKey: String, type: T.Type) -> T?
移除
public func removeParameter(forKey: String) -> String?
//
import UIKit
import SwiftPowerStorage
class ViewController: UIViewController {
let cdManager = SPSManager()
override func viewDidLoad() {
super.viewDidLoad()
}
为了保存对象,你的对象必须遵循 Codable 协议。 请记住,Swift 中的所有基本类型都遵循 Codable 协议 :D 。
//
import UIKit
import os.log
public struct TestOne: Codable {
var name: String?
var age: Int?
var last: String?
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let member = TestOne(name: "David", age: 39, last: "Martin Saiz")
cdManager.saveParameter(forKey: "Member1", object: member) { (result, last) -> (Void) in
if result {
// do something when save is successful
}
if let last = last {
// If the entity already exists and had been overwritten, here returns the last value.
}
}
}
}
使用 completionHandler 以确保与保存任务相关的所有活动在值真正保存后执行。所有关于 CoreData 的操作都在异步 DispatchQueue 中启动。
加载对象非常容易,只需调用该函数并提供正确的类型来转换对象。
if let value = cdManager.loadParameter(forKey: "Member1", type: TestOne.self) {
print(value)
} else {
print("Object not found")
}
您可以通过调用以下函数来移除现有对象
if let removed = cdManager.removeParameter(forKey: "Member1") {
print(removed)
} else {
print("Object not found")
}
如果删除成功,此函数将返回已删除对象的值。
如果您需要将数据库重置为初始状态,请调用以下函数
if cdManager.destroyPersistenStore() {
// do something when deletion successful
}
函数返回布尔值作为删除结果。
本产品使用的持久容器扩展自 NSPersistentCloudKitContainer,因此,您可以创建一个 iCloud 容器,添加 iCloud 功能,数据库将与您所有使用此功能的 Apple 产品共享。
public lazy var persistentContainer: NSPersistentCloudKitContainer
David Martin Saiz – @deividmarshall – davms81@gmail.com
根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE
。
https://github.com/CodeNationDev/