-1

I've been googling & stackoverflow'in but i can't find a solution for Swift4. I'm trying to delete all my entries in my core data database.

Heres my code

//Whats important
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Day", in: managedContext)!


//How i use it (might be completely unnecessary, just in case)
let fetchDay = NSFetchRequest<NSFetchRequestResult>(entityName: "Day")
fetchDay.fetchLimit = 1
let currentDay = try! managedContext.fetch(fetchDay)

let today: Day = currentDay.first as! Day
print("Date: \(today.date!)")
print("Completed: \(today.completed)")

No, my question is different. I will edit to explain how.

The delegate & context variables uses functions which is not available in swift4

Glutch
  • 662
  • 1
  • 6
  • 19

1 Answers1

0

You can delete all entries by many ways:

First

// Initialize Fetch Request
let fetchRequest = NSFetchRequest(entityName: "Item")

// Configure Fetch Request
fetchRequest.includesPropertyValues = false

do {
    let items = try managedObjectContext.executeFetchRequest(fetchRequest) as! [NSManagedObject]

    for item in items {
        managedObjectContext.deleteObject(item)
    }

    // Save Changes
    try managedObjectContext.save()

} catch {
    // Error Handling
    // ...
}

Second: Batch Delete Request:-

// Create Fetch Request
let fetchRequest = NSFetchRequest(entityName: "Item")

// Create Batch Delete Request
let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)

do {
    try managedObjectContext.executeRequest(batchDeleteRequest)

} catch {
    // Error Handling
}

Third: Deleting a Persistent Store:-

do {
    try persistentStoreCoordinator.destroyPersistentStoreAtURL(persistentStoreURL, withType: NSSQLiteStoreType, options: nil)

} catch {
    // Error Handling
}

You can find more info from: https://cocoacasts.com/how-to-delete-every-record-of-a-core-data-entity

Jogendar Choudhary
  • 3,476
  • 1
  • 12
  • 26