Delete/Reset all entries in Core Data?

后端 未结 30 3282
天命终不由人
天命终不由人 2020-11-22 16:00

Do you know of any way to delete all of the entries stored in Core Data? My schema should stay the same; I just want to reset it to blank.


Edit

30条回答
  •  无人共我
    2020-11-22 16:19

    Works with all versions. Pass entity name and iterate through to delete all the entries and save the context.

    func deleteData(entityToFetch: String, completion: @escaping(_ returned: Bool) ->()) {
        var context = NSManagedObjectContext()
        if #available(iOS 10.0, *) {
            context = self.persistentContainer.viewContext
        } else {
            context = self.managedObjectContext
        }
    
        let fetchRequest = NSFetchRequest()
        fetchRequest.entity = NSEntityDescription.entity(forEntityName: entityToFetch, in: context)
        fetchRequest.includesPropertyValues = false
        do {
            let results = try context.fetch(fetchRequest) as! [NSManagedObject]
            for result in results {
                context.delete(result)
            }
            try context.save()
            completion(true)
        } catch {
            completion(false)
            print("fetch error -\(error.localizedDescription)")
        }
    }
    

提交回复
热议问题