What is the proper way to use NSFetchedResultsController with diffable data sources in Swift?

In Swift, a Core Data fetched results controller can vend diffable data source snapshots to its delegate which greatly simplifies using lists. In Swift this snapshot is an NSDiffableDataSourceSnapshotReference, so to create my data source I've been doing:
Code Block
let dataSource = UICollectionViewDiffableDataSourceReference(collectionView: collectionView) { [unowned self] (collectionView, indexPath, _) -> UICollectionViewCell? in
            let item = self.fetchedResultsController.object(at: indexPath)
            // configure and return cell
}

Is it correct to be using the fetched results controller to get the object or is there a better way? I noticed that the item identifier is an NSManagedObjectID so should I be using that and a MOC instead of the FRC?

Also, a couple of months ago when some documentation was finally added for diffable data sources I noticed comments warning against using the -Reference versions of the data sources and snapshots. Apparently it is important to bridge the snapshots like so:
Code Block
let snapshot = snapshotReference as NSDiffableDataSourceSnapshot<Int, UUID>

If this is the case, what purpose does the UUID serve and how can I use it to get the corresponding managed object?
What is the proper way to use NSFetchedResultsController with diffable data sources in Swift?
 
 
Q