Get immediate access to this and over 1,500+ other videos and books.

Boost your skills with a Ultimate Beginner Subscription. With over 60+ video courses and our core foundational programming books bundled in one subscription, it’s simply the best investment you can make in your development career.

Deleting Courses Using Snapshots

If you're interested in working on a more robust deletion implementation, so that tutorials stay deleted from the Queue tab, check out this code you can add to the deleteSelectedItems method that will update the DataSource:

@IBAction func deleteSelectedItems() {
guard let selectedIndexPaths = collectionView.indexPathsForSelectedItems else { return }
let tutorials = selectedIndexPaths.compactMap { dataSource.itemIdentifier(for: $0) }

// Get all of the tutorials in the data source that are currently queued
let queuedTutorials = DataSource.shared.tutorials.flatMap { $0.queuedTutorials }
// Find the queued tutorials that will be deleted from the collection view
let tutorialsToUnqueue = Set(tutorials).intersection(queuedTutorials)
// Set the `isQueued` property to false for each matching tutorial
tutorialsToUnqueue.forEach { $0.isQueued = false }

Update Note: This course was originally recorded in November, 2019 using Xcode 11 & iOS 13. The course has been reviewed, and all materials updated to Xcode 12 & iOS 14 as of September, 2020.

Everything is easier using diffable data sources, including deleting items. Learn how to apply changes and animate them in this episode.