CoreDataStack.swift 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import CoreData
  2. import Foundation
  3. class CoreDataStack: ObservableObject {
  4. init() {}
  5. static let shared = CoreDataStack()
  6. static let identifier = "CoreDataStack"
  7. lazy var persistentContainer: NSPersistentContainer = {
  8. let container = NSPersistentContainer(name: "Core_Data")
  9. container.loadPersistentStores(completionHandler: { _, error in
  10. guard let error = error as NSError? else { return }
  11. fatalError("Unresolved error: \(error), \(error.userInfo)")
  12. })
  13. return container
  14. }()
  15. // ensure thread safety by creating a NSManagedObjectContext for the main thread and for a background thread
  16. lazy var backgroundContext: NSManagedObjectContext = {
  17. let newbackgroundContext = CoreDataStack.shared.persistentContainer.newBackgroundContext()
  18. newbackgroundContext.automaticallyMergesChangesFromParent = true
  19. return newbackgroundContext
  20. }()
  21. lazy var viewContext: NSManagedObjectContext = {
  22. let viewContext = CoreDataStack.shared.persistentContainer.viewContext
  23. viewContext.automaticallyMergesChangesFromParent = true
  24. return viewContext
  25. }()
  26. }