init(fetchRequest:sectionIdentifier:animation:)
Creates a fully configured sectioned fetch request that uses the specified animation when updating results.
Declaration
@MainActor @preconcurrency init(fetchRequest: NSFetchRequest<Result>, sectionIdentifier: KeyPath<Result, SectionIdentifier>, animation: Animation? = nil)Parameters
- fetchRequest:
An Nsfetchrequest instance that describes the search criteria for retrieving data from the persistent store.
- sectionIdentifier:
A key path that SwiftUI applies to the
Resulttype to get an object’s section identifier. - animation:
The animation to use for user interface changes that result from changes to the fetched results.
Discussion
Use this initializer when you want to configure a fetch request with more than a predicate and sort descriptors. For example, you can vend a request from a Quake managed object that the Loading and Displaying a Large Data Feed sample code project defines to store earthquake data. Limit the number of results to 1000 by setting a fetchLimit for the request:
extension Quake {
var request: NSFetchRequest<Quake> {
let request = NSFetchRequest<Quake>(entityName: "Quake")
request.sortDescriptors = [
NSSortDescriptor(
keyPath: \Quake.time,
ascending: true)]
request.fetchLimit = 1000
return request
}
}Use the request to define a SectionedFetchedResults property:
@SectionedFetchRequest<String, Quake>(
fetchRequest: Quake.request,
sectionIdentifier: \.day)
private var quakes: FetchedResults<String, Quake>If you only need to configure the request’s section identifier, predicate, and sort descriptors, use init(sectionIdentifier:sortDescriptors:predicate:animation:) instead. If you need to specify a Transaction rather than an optional Animation, use init(fetchRequest:sectionIdentifier:transaction:).