Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
NSManagedObjectContext extension methods to delete all managed objects, or all objects of a given type in the context.
//
// Created by Collin Donnell on 7/22/15.
// Copyright (c) 2015 Collin Donnell. All rights reserved.
//
import CoreData
extension NSManagedObjectContext {
convenience init(parentContext parent: NSManagedObjectContext, concurrencyType: NSManagedObjectContextConcurrencyType) {
self.init(concurrencyType: concurrencyType)
parentContext = parent
}
func deleteAllObjects(error: NSErrorPointer) {
if let entitesByName = persistentStoreCoordinator?.managedObjectModel.entitiesByName as? [String: NSEntityDescription] {
for (name, entityDescription) in entitesByName {
deleteAllObjectsForEntity(entityDescription, error: error)
// If there's a problem, bail on the whole operation.
if error.memory != nil {
return
}
}
}
}
func deleteAllObjectsForEntity(entity: NSEntityDescription, error: NSErrorPointer) {
let fetchRequest = NSFetchRequest()
fetchRequest.entity = entity
fetchRequest.fetchBatchSize = 50
let fetchResults = executeFetchRequest(fetchRequest, error: error)
if error.memory != nil {
return
}
if let managedObjects = fetchResults as? [NSManagedObject] {
for object in managedObjects {
deleteObject(object)
}
}
}
}

idushes commented Oct 17, 2015

Didn't work with Swift 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment