---
title: Schema
framework: swiftdata
role: symbol
role_heading: Class
path: swiftdata/schema
---

# Schema

An object that maps model classes to data in the model store, and helps with the migration of that data between releases.

## Declaration

```swift
final class Schema
```

## Topics

### Creating a schema

- [init(_:version:)](swiftdata/schema/init(_:version:)-8el78.md)
- [init(_:version:)](swiftdata/schema/init(_:version:)-8jo9o.md)
- [init(versionedSchema:)](swiftdata/schema/init(versionedschema:).md)
- [VersionedSchema](swiftdata/versionedschema.md)
- [init()](swiftdata/schema/init().md)
- [Schema components](swiftdata/schemacomponents.md)

### Accessing entities

- [entities](swiftdata/schema/entities.md)
- [entitiesByName](swiftdata/schema/entitiesbyname.md)
- [Schema.Entity](swiftdata/schema/entity.md)

### Accessing version details

- [schemaEncodingVersion](swiftdata/schema/schemaencodingversion.md)
- [encodingVersion](swiftdata/schema/encodingversion.md)

### Saving and loading

- [save(to:)](swiftdata/schema/save(to:).md)
- [load(from:)](swiftdata/schema/load(from:).md)

### Classes

- [Schema.Index](swiftdata/schema/index.md)
- [Schema.Unique](swiftdata/schema/unique.md)

### Structures

- [Schema.PropertyMetadata](swiftdata/schema/propertymetadata.md)
- [Schema.Version](swiftdata/schema/version-swift.struct.md)

### Initializers

- [init(_:version:)](swiftdata/schema/init(_:version:)-1aea5.md)

### Instance Properties

- [version](swiftdata/schema/version-swift.property.md)

### Instance Methods

- [entity(for:)](swiftdata/schema/entity(for:).md)

### Type Methods

- [entityName(for:)](swiftdata/schema/entityname(for:).md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [Decodable](swift/decodable.md)
- [Encodable](swift/encodable.md)
- [Equatable](swift/equatable.md)
- [Escapable](swift/escapable.md)
- [Hashable](swift/hashable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)

## See Also

### Creating a model container

- [init(for:migrationPlan:configurations:)](swiftdata/modelcontainer/init(for:migrationplan:configurations:)-1czix.md)
- [init(for:migrationPlan:configurations:)](swiftdata/modelcontainer/init(for:migrationplan:configurations:)-8s4ts.md)
- [init(for:migrationPlan:configurations:)](swiftdata/modelcontainer/init(for:migrationplan:configurations:)-qof9.md)
- [PersistentModel](swiftdata/persistentmodel.md)
- [ModelConfiguration](swiftdata/modelconfiguration.md)
- [SchemaMigrationPlan](swiftdata/schemamigrationplan.md)
