Skip to content

Instantly share code, notes, and snippets.

@stevencurtis
Created July 7, 2020 15:44
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 stevencurtis/9a763d7e03a80f5e5c71390979490b1d to your computer and use it in GitHub Desktop.
Save stevencurtis/9a763d7e03a80f5e5c71390979490b1d to your computer and use it in GitHub Desktop.
coredatamanager
class CoreDataManager: CoreDataManagerProtocol {
private var tasks = [NSManagedObject]()
private var managedObjectContext: NSManagedObjectContext! = nil
private var entity: NSEntityDescription! = nil
init (objectContext: NSManagedObjectContext, entity: NSEntityDescription) {
self.managedObjectContext = objectContext
self.entity = entity
}
required init() {
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
managedObjectContext = appDelegate.persistentContainer.viewContext
entity = NSEntityDescription.entity(forEntityName: Constants.entityName, in: managedObjectContext)!
}
func getTasks() -> [NSManagedObject] {
if tasks.count > 0 {return tasks}
let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: Constants.entityName)
do {
tasks = try managedObjectContext.fetch(fetchRequest)
} catch let error as NSError {
print("Could not fetch. \(error), \(error.userInfo)")
}
return tasks
}
func save(task: String) {
let taskObject = NSManagedObject(entity: entity, insertInto: managedObjectContext)
taskObject.setValue(task, forKeyPath: Constants.entityNameAttribute)
do {
try managedObjectContext.save()
tasks.append(taskObject)
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment