Created
April 6, 2016 03:01
-
-
Save gtokman/679ff26df1cddd6992dbf7133612d31c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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