swift 核心数据基本类上下文管理器。 #CoreData #Swift

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 核心数据基本类上下文管理器。 #CoreData #Swift相关的知识,希望对你有一定的参考价值。

import UIKit
import CoreData

class DataController {
    
    private init() {}
    
    static var applicationDocumentsDerictory: URL = {
        let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
        return urls[urls.count-1]
    }()
    
    static var managedObjectModel: NSManagedObjectModel = {
        let resourceName = <#.xcdatamodeld file name#>
        let modelURL = Bundle.main.url(forResource: resourceName, withExtension: "momd")
        assert(modelURL != nil, "No such resource \(resourceName)")
        let objectModel = NSManagedObjectModel(contentsOf: modelURL!)
        assert(objectModel != nil, "Failed to create managed object model")
        return objectModel!
    }()
    
    static var persistentStoreCoordinator: NSPersistentStoreCoordinator = {
        let coordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
        let url = applicationDocumentsDerictory.appendingPathComponent(<#".sqlite file name"#>)
        do {
            try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: nil)
        } catch {
            // Handle error
            abort()
        }
        return coordinator
    }()
    
    static var managedObjectContext: NSManagedObjectContext = {
        let coordinator = persistentStoreCoordinator
        var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType)
        managedObjectContext.persistentStoreCoordinator = coordinator
        return managedObjectContext
    }()
    
    static func saveContext() {
        if managedObjectContext.hasChanges {
            do {
                try managedObjectContext.save()
            } catch (let error) {
                print(error)
                abort()
            }
        }
    }
}

以上是关于swift 核心数据基本类上下文管理器。 #CoreData #Swift的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 核心数据“实体”错误:`使用未声明的类型`

Swift 正式开源, 包括 Swift 核心库和包管理器

Python核心技术与实战——二一|巧用上下文管理器和with语句精简代码

SQLAlchemy 核心连接上下文管理器

如何在托管对象上下文之外使用核心数据对象?

Swift:在后台同步核心数据对象