Skip to content

Instantly share code, notes, and snippets.

@barbaramartina
Last active November 4, 2017 19:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save barbaramartina/803574899a488bc6df8b21e766f15028 to your computer and use it in GitHub Desktop.
Save barbaramartina/803574899a488bc6df8b21e766f15028 to your computer and use it in GitHub Desktop.
//
// 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)")
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment