Use the following Struct for ios 9 and 10
this is for context using nex and replacing ModelCoreData for your model name CoreData Storage.share.context
import Foundation import CoreData p>
/// NSPersistentStoreCoordinator extension NSPsistentStoreCoordinator extension {
/// NSPersistentStoreCoordinator error types public enum CoordinatorError: Error { /// .momd file not found case modelFileNotFound /// NSManagedObjectModel creation fail case modelCreationError /// Gettings document directory fail case storePathNotFound } /// Return NSPersistentStoreCoordinator object static func coordinator(name: String) throws -> NSPersistentStoreCoordinator? { guard let modelURL = Bundle.main.url(forResource: name, withExtension: "momd") else { throw CoordinatorError.modelFileNotFound } guard let model = NSManagedObjectModel(contentsOf: modelURL) else { throw CoordinatorError.modelCreationError } let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model) guard let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last else { throw CoordinatorError.storePathNotFound } do { let url = documents.appendingPathComponent("\(name).sqlite") let options = [ NSMigratePersistentStoresAutomaticallyOption : true, NSInferMappingModelAutomaticallyOption : true ] try coordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: options) } catch { throw error } return coordinator }
}
struct Storage {
static var shared = Storage() @available(iOS 10.0, *) private lazy var persistentContainer: NSPersistentContainer = { let container = NSPersistentContainer(name: "ModelCoreData") container.loadPersistentStores { (storeDescription, error) in print("CoreData: Inited \(storeDescription)") guard error == nil else { print("CoreData: Unresolved error \(String(describing: error))") return } } return container }() private lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = { do { return try NSPersistentStoreCoordinator.coordinator(name: "ModelCoreData") } catch { print("CoreData: Unresolved error \(error)") } return nil }() private lazy var managedObjectContext: NSManagedObjectContext = { let coordinator = self.persistentStoreCoordinator var managedObjectContext = NSManagedObjectContext(concurrencyType: .mainQueueConcurrencyType) managedObjectContext.persistentStoreCoordinator = coordinator return managedObjectContext }()
}
source share