// // CoreDataStackTheOldWay.swift // CoreDataShowcase // // Created by Barbara Rodeker on 24.09.17. // // THIS CLASS CONTAINS PROPERTIES THAT NEEDED TO BE // CREATED FOR CORE DATA BEFORE THE EXISTENCE OF NSPERSISTENTCONTAINER (added in iOS10) // // SWIFT 4 import Foundation import CoreData class CoreDataStackTheOldWay: NSObject { private static let modelName = "CoreDataShowcase" static var shared = CoreDataStackTheOldWay() private(set) lazy var model: NSManagedObjectModel = { let modelURL = Bundle.main.url(forResource: CoreDataStackTheOldWay.modelName, withExtension: "momd")! return NSManagedObjectModel(contentsOf: modelURL)! }() private(set) lazy var coordinator: NSPersistentStoreCoordinator = { let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model) let storeURL = URL(string: "\(CoreDataStackTheOldWay.modelName).sqlite", relativeTo: FileManager.applicationDocumentsDirectory) do { try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storeURL, options: [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]) } catch { fatalError("unable to read store ") } return coordinator }() private(set) lazy var context: NSManagedObjectContext = { let context = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) context.persistentStoreCoordinator = coordinator return context }() // MARK: - Saving support func save() { if context.hasChanges { do { try context.save() } catch { let nserror = error as NSError fatalError("Unresolved error \(nserror), \(nserror.userInfo)") } } } }