---
title: "init(fetchRequest:animation:)"
framework: swiftui
role: symbol
role_heading: Initializer
path: "swiftui/fetchrequest/init(fetchrequest:animation:)"
---

# init(fetchRequest:animation:)

Creates a fully configured fetch request that uses the specified animation when updating results.

## Declaration

```swift
@MainActor @preconcurrency init(fetchRequest: NSFetchRequest<Result>, animation: Animation? = nil)
```

## Parameters

- `fetchRequest`: An doc://com.apple.documentation/documentation/CoreData/NSFetchRequest instance that describes the search criteria for retrieving data from the persistent store.
- `animation`: The animation to use for user interface changes that result from changes to the fetched results.

## Discussion

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 FetchedResults property: @FetchRequest(fetchRequest: Quake.request) private var quakes: FetchedResults<Quake> If you only need to configure the request’s predicate and sort descriptors, use init(sortDescriptors:predicate:animation:) instead. If you need to specify a Transaction rather than an optional Animation, use init(fetchRequest:transaction:).

## See Also

### Creating a fully configured fetch request

- [init(fetchRequest:transaction:)](swiftui/fetchrequest/init(fetchrequest:transaction:).md)
