I am trying to use batch delete feature of core data. I have an entity named Car. That entity has a column name modelNumber as Int
. I want to delete all cars which has modelNumber older than 2000. Here is my code:
func deleteCarsOlderThan(modelNumber: Int) {
let predicate = NSPredicate(format: "modelNumber <= %@", NSNumber(int: modelNumber))
let fetchRequest = NSFetchRequest(entityName: "Car")
fetchRequest.predicate = predicate
let deleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
deleteRequest.resultType = .ResultTypeCount
do {
let result = try self.fhirManagedObjectContext.executeRequest(deleteRequest)
try self.fhirManagedObjectContext.save()
}
catch {
print(error)
}
}
While executing this code, control goes to catch block and it gives an error says: Foundation._GenericObjCError.NilError
. My fetch request is working well as if I use:
let olderCars = self.executeFetchRequest(fetchRequest)
it returns me an array of older cars. I don't know where I am doing wrong. I am using iOS9 for this purpose.