Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import CoreData
- protocol CoreDataServiceProtocol:class {
- var errorHandler: (Error) -> Void {get set}
- var persistentContainer: NSPersistentContainer {get}
- var managedObjectContext: NSManagedObjectContext {get}
- var backgroundContext: NSManagedObjectContext {get}
- func performBackgroundTask(_ block: @escaping (NSManagedObjectContext) -> Void)
- func performForegroundTask(_ block: @escaping (NSManagedObjectContext) -> Void)
- }
- final class CoreDataStack: CoreDataServiceProtocol {
- static let shared = CoreDataStack()
- var errorHandler: (Error) -> Void = {_ in }
- lazy var persistentContainer: NSPersistentContainer = {
- let container = NSPersistentContainer(name: "coredatainextension")
- container.loadPersistentStores(completionHandler: { (storeDescription, error) in
- if let error = error as NSError? {
- fatalError("Unresolved error (error), (error.userInfo)")
- }
- })
- return container
- }()
- lazy var managedObjectContext: NSManagedObjectContext = {
- return self.persistentContainer.viewContext
- }()
- lazy var backgroundContext: NSManagedObjectContext = {
- return self.persistentContainer.newBackgroundContext()
- }()
- func performForegroundTask(_ block: @escaping (NSManagedObjectContext) -> Void) {
- self.managedObjectContext.perform {
- block(self.managedObjectContext)
- }
- }
- func performBackgroundTask(_ block: @escaping (NSManagedObjectContext) -> Void) {
- self.persistentContainer.performBackgroundTask(block)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement