Configuration

A Configuration instance describes the different options used to create an instance of a Realm.

Configuration instances are just plain Swift structs. Unlike Realms and Objects, they can be freely shared
between threads as long as you do not mutate them.

Creating configuration values for class subsets (by setting the objectClasses property) can be expensive. Because
of this, you will normally want to cache and reuse a single configuration value for each distinct configuration
rather than creating a new value each time you open a Realm.

Parameters

For Realms intended to sync with the Realm Object Server, a sync configuration.

encryptionKey

An optional 64-byte key to use to encrypt the data.

readOnly

Whether the Realm is read-only (must be true for read-only files).

schemaVersion

The current schema version.

migrationBlock

The block which migrates the Realm to the current version.

deleteRealmIfMigrationNeeded

If true, recreate the Realm file with the provided
schema if a migration is required.

shouldCompactOnLaunch

A block called when opening a Realm for the first time during the
life of a process to determine if it should be compacted before being
returned to the user. It is passed the total file size (data + free space)
and the total bytes used by data in the file.

Return `true ` to indicate that an attempt to compact the file should be made.
The compaction will be skipped if another process is accessing it.

Declaration

This is required to be able to open Realm files which are not writeable or are in a directory which is not
writeable. This should only be used on files which will not be modified by anyone while they are open, and not
just to get a read-only view of a file which may be written to by another thread or process. Opening in
read-only mode requires disabling Realm’s reader/writer coordination, so committing a write transaction from
another process will result in crashes.

Declaration

Whether to recreate the Realm file with the provided schema if a migration is required. This is the case when
the stored schema differs from the provided schema or the stored schema version differs from the version on
this configuration. Setting this property to true deletes the file if a migration would otherwise be required
or executed.

Note

Setting this property to true doesn’t disable file format migrations.

Declaration

A block called when opening a Realm for the first time during the
life of a process to determine if it should be compacted before being
returned to the user. It is passed the total file size (data + free space)
and the total bytes used by data in the file.

Return true to indicate that an attempt to compact the file should be made.
The compaction will be skipped if another process is accessing it.