Swift Coredata 基础操作

import CoreData
import Foundation

class CunoPDFDataHelper {
    static let shared = CunoPDFDataHelper()
    
    private lazy var persistentContainer: NSPersistentContainer = {
        let container = NSPersistentContainer(name: "CunoDatabase")
        container.loadPersistentStores(completionHandler: { (storeDescription, error) in
            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
            }
        })
        return container
    }()
    
    // 增
    @discardableResult
    func insert(file_name: String,
                date: Date = Date(),
                isDefault: Bool = false) -> NSManagedObjectID {
        let context = persistentContainer.viewContext
        let model = CunoPDFModel(context: context)
        model.date = date
        model.isDefault = isDefault
        model.file_name = file_name
        // save
        do {
            try context.save()
            print("Saved successfully!")
            return model.objectID
        } catch {
            fatalError("Could not save:\(error)")
        }
    }
    
    // 查所有
    func values() -> [CunoPDFModel] {
        let context = persistentContainer.viewContext
        let fetchRequest = CunoPDFModel.fetchRequest()
        do {
            return try context.fetch(fetchRequest).reversed()
        } catch {
            return []
        }
    }
    
    // 查单个
    func value(id: NSManagedObjectID) -> CunoPDFModel? {
        let context = persistentContainer.viewContext
        do {
            return try context.existingObject(with: id) as? CunoPDFModel
        } catch {
            return nil
        }
    }
    
    // 删 根据模型
    func remove(model: CunoPDFModel) {
        let context = persistentContainer.viewContext
        context.delete(model)
        do {
            try context.save()
        } catch {
            print("Remove failed.\(model.self)")
        }
    }
    
    // 删 根据NSManagedObjectID
    func delete(id: NSManagedObjectID) {
        let context = persistentContainer.viewContext
        do {
            guard let model = try context.existingObject(with: id) as? CunoPDFModel else { return }
            context.delete(model)
            try context.save()
        } catch {
            print("Deletion failed.")
        }
    }
    
    // 改
    func update(id: NSManagedObjectID, file_name: String) {
        let context = persistentContainer.viewContext
        do {
            if let model = try context.existingObject(with: id) as? CunoPDFModel {
                model.file_name = file_name
                try context.save()
            }
        } catch {
            print("Update failed")
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容