_____         _  __ _   _____                       _____ _                             
  / ____|       (_)/ _| | |  __ \                     / ____| |                            
 | (_____      ___| |_| |_| |__) |____      _____ _ _| (___ | |_ ___  _ __ __ _  __ _  ___ 
  \___ \ \ /\ / / |  _| __|  ___/ _ \ \ /\ / / _ \ '__\___ \| __/ _ \| '__/ _` |/ _` |/ _ \
  ____) \ 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
        }

函数返回布尔值作为删除结果。

iCloud 同步

本产品使用的持久容器扩展自 NSPersistentCloudKitContainer,因此,您可以创建一个 iCloud 容器,添加 iCloud 功能,数据库将与您所有使用此功能的 Apple 产品共享。

public lazy var persistentContainer: NSPersistentCloudKitContainer

元数据

David Martin Saiz – @deividmarshalldavms81@gmail.com

根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE

https://github.com/CodeNationDev/

版本历史