<!--
{
  "availability" : [
    "iOS: 18.0.0 -",
    "iPadOS: 18.0.0 -",
    "macCatalyst: 18.0.0 -",
    "macOS: 15.0.0 -",
    "swift: 5.9.0 -",
    "tvOS: 18.0.0 -",
    "visionOS: 2.0.0 -",
    "watchOS: 11.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "SwiftData",
  "identifier" : "/documentation/SwiftData/DataStore",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "SwiftData"
    ],
    "preciseIdentifier" : "s:9SwiftData0B5StoreP"
  },
  "title" : "DataStore"
}
-->

# DataStore

An interface that enables SwiftData to read and write model data without
knowledge of the underlying storage mechanism.

```
protocol DataStore : AnyObject
```

## Topics

### Creating a data store

[`init(_:migrationPlan:)`](/documentation/SwiftData/DataStore/init(_:migrationPlan:))

### Accessing store information

[`configuration`](/documentation/SwiftData/DataStore/configuration-swift.property)

[`Configuration`](/documentation/SwiftData/DataStore/Configuration-swift.associatedtype)

[`DataStoreConfiguration`](/documentation/SwiftData/DataStoreConfiguration)

[`identifier`](/documentation/SwiftData/DataStore/identifier)

[`schema`](/documentation/SwiftData/DataStore/schema)

### Processing fetch requests

[`fetch(_:)`](/documentation/SwiftData/DataStore/fetch(_:))

[`DataStoreFetchRequest`](/documentation/SwiftData/DataStoreFetchRequest)

[`DataStoreFetchResult`](/documentation/SwiftData/DataStoreFetchResult)

[`Snapshot`](/documentation/SwiftData/DataStore/Snapshot)

[`DataStoreSnapshot`](/documentation/SwiftData/DataStoreSnapshot)

[`DataStoreSnapshotValue`](/documentation/SwiftData/DataStoreSnapshotValue)

[`fetchCount(_:)`](/documentation/SwiftData/DataStore/fetchCount(_:))

[`fetchIdentifiers(_:)`](/documentation/SwiftData/DataStore/fetchIdentifiers(_:))

### Persisting model data

[`save(_:)`](/documentation/SwiftData/DataStore/save(_:))

[`DataStoreSaveChangesRequest`](/documentation/SwiftData/DataStoreSaveChangesRequest)

[`DataStoreSaveChangesResult`](/documentation/SwiftData/DataStoreSaveChangesResult)

### Removing all persisted model data

[`erase()`](/documentation/SwiftData/DataStore/erase())

### Sharing cached data between model contexts

[`initializeState(for:)`](/documentation/SwiftData/DataStore/initializeState(for:))

[`EditingState`](/documentation/SwiftData/EditingState)

[`cachedSnapshots(for:editingState:)`](/documentation/SwiftData/DataStore/cachedSnapshots(for:editingState:))

[`invalidateState(for:)`](/documentation/SwiftData/DataStore/invalidateState(for:))

## Relationships

### Inherited By

[`DataStoreBatching`](/documentation/SwiftData/DataStoreBatching)

### Conforming Types

[`DefaultStore`](/documentation/SwiftData/DefaultStore)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)