Skip to content

Instantly share code, notes, and snippets.

@gtokman
Created April 6, 2016 03:01
Show Gist options
  • Save gtokman/679ff26df1cddd6992dbf7133612d31c to your computer and use it in GitHub Desktop.
Save gtokman/679ff26df1cddd6992dbf7133612d31c to your computer and use it in GitHub Desktop.
import Foundation
import CoreData
class CoreDataStack {
let modelName = "Data Model Name"
private lazy var applicationDocumentsDirectory: NSURL = {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1]
}()
// Managed Object Context
lazy var context: NSManagedObjectContext = {
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = self.psc
return managedObjectContext
}()
// Persistent Store Coor
private lazy var psc: NSPersistentStoreCoordinator = {
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent(self.modelName)
do {
let options = [NSMigratePersistentStoresAutomaticallyOption: true]
try coordinator.addPersistentStoreWithType( NSSQLiteStoreType, configuration: nil, URL: url, options: options)
} catch {
print("Error adding persistent store.")
}
return coordinator
}()
// Managed Object Model
private lazy var managedObjectModel: NSManagedObjectModel = {
let modelURL = NSBundle.mainBundle().URLForResource(self.modelName, withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()
// Save
func saveContext() {
if context.hasChanges {
do {
try context.save()
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
abort()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment