Skip to content

Instantly share code, notes, and snippets.

@saintc0d3r
Created February 3, 2016 02:27
Show Gist options
  • Save saintc0d3r/34ff319d55d39f536aba to your computer and use it in GitHub Desktop.
Save saintc0d3r/34ff319d55d39f536aba to your computer and use it in GitHub Desktop.
iOS Core Data plumbing code in Swift. Put this under your AppDelegate class
// MARK: - Core Data Stack
// Define application's document directory
lazy var applicationDocumentsDirectory: NSURL = {
let urls = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
return urls[urls.count-1]
}()
// Define Managed Object Model
lazy var managed_object_model :NSManagedObjectModel = {
let model_url = NSBundle.mainBundle().URLForResource("Lifestyle", withExtension: "momd")
return NSManagedObjectModel(contentsOfURL: model_url!)!
}()
// Define persistent store coordinator
lazy var persistent_store_coordinator :NSPersistentStoreCoordinator = {
let coordinator :NSPersistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managed_object_model)
let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqllite")
var failure_reason = "There was an error creating or loading the application's saved data"
do{
try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)
}
catch {
// Report any error we got
var dict = [String: AnyObject]()
dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
dict[NSLocalizedFailureReasonErrorKey] = failure_reason
dict[NSUnderlyingErrorKey] = error as NSError
let wrappedError = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
// Replace this with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog("Unresolved error \(wrappedError), \(wrappedError.userInfo)")
abort()
}
return coordinator
}()
// Define managed object context
lazy var managed_object_context :NSManagedObjectContext = {
// Return the managed object context for the application
let coordinator = self.persistent_store_coordinator
var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType)
managedObjectContext.persistentStoreCoordinator = coordinator
return managedObjectContext
}()
// MARK: - Core Data Saving support
func save_context(OnSaveSucceded : (() -> Void)?) {
if managed_object_context.hasChanges {
do {
try managed_object_context.save()
if (OnSaveSucceded != nil){
OnSaveSucceded!()
}
} catch {
let nserror = error as NSError
NSLog("Unresolved error \(nserror), \(nserror.userInfo)")
abort()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment