MarsFM
8/12/2018 - 2:33 PM

Core Data Stack

import CoreData

class CoreDataStack{
    
    private let modelName: String
    
    lazy var managedContext: NSManagedObjectContext = {
        return storeContainer.viewContext
    }()
    
    lazy var backgraundContext: NSManagedObjectContext = {
        return storeContainer.newBackgroundContext()
    }()
    
    private lazy var storeContainer: NSPersistentContainer = {
        
        let container = NSPersistentContainer(name: modelName)
        
        container.loadPersistentStores(completionHandler: { (_, error) in
            if let error = error as NSError? {
                print("Ошибка \(error.localizedDescription)")
            }
        })
        
        return container
        
    }()
    
    
    init(modelName: String) {
        self.modelName = modelName
    }
    
    func save() {
        guard managedContext.hasChanges else { return }
        
        do {
            try managedContext.save()
        } catch let error as NSError {
            print("Ошибка \(error.localizedDescription)")
        }
    }
    
}