L-Sypniewski
2/26/2018 - 10:24 AM

Swift - delete all entities using NSFetchedResultsController

Swift - delete all entities using NSFetchedResultsController

// Prepare NSFetchedResultsController
fileprivate lazy var fetchedResultsController: NSFetchedResultsController<Article> = {
        // Create Fetch Request
        let fetchRequest: NSFetchRequest<Article> = Article.fetchRequest()
        
        // Configure Fetch Request
        fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(Article.sourceName), ascending: true)]
        
        // Create Fetched Results Controller
        let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.persistentContainer.viewContext, sectionNameKeyPath: nil/*#keyPath(Article.sourceName)*/, cacheName: nil)
        
        // Configure Fetched Results Controller
        fetchedResultsController.delegate = self
        
        return fetchedResultsController
    }()

// Delete all entities
let articles = fetchedResultsController.fetchedObjects
        if let articles = articles {
            for article in articles {
                article.managedObjectContext?.delete(article)
            }
        }