Configuração

@frozen
public struct Configuration : Sendable
extension Realm.Configuration: CustomStringConvertible
extension Realm.Configuration: Equatable

Uma instância Configuration descreve as diferentes opções usadas para criar uma instância de um Realm.

Configuration instâncias são estruturas Swift simples. Ao contrário de Realms e Objects, eles podem ser compartilhados livremente entre threads, desde que você não os altere.

Criar valores de configuração para subconjuntos de classe (definindo a propriedade objectClasses ) pode ser caro. Por esse motivo, normalmente você desejará armazenar em cache e reutilizar um único valor de configuração para cada configuração distinta, em vez de criar um novo valor sempre que abrir um Realm.

Configuração padrão

  • O Configuration padrão usado para criar Realms quando nenhuma configuração é explicitamente especificada (ou seja, Realm())

    Declaração

    Swift

    public static var defaultConfiguration: Configuration { get set }

Inicialização

  • Cria um Configuration que pode ser utilizado para criar novas instâncias Realm .

    Observação

    The fileURL, and inMemoryIdentifier, parameters are mutually exclusive. Only set one of them, or none if you wish to use the default file URL.

    Declaração

    Swift

    @preconcurrency
    public init(fileURL: URL? = URL(fileURLWithPath: RLMRealmPathForFile("default.realm"), isDirectory: false),
                inMemoryIdentifier: String? = nil,
                encryptionKey: Data? = nil,
                readOnly: Bool = false,
                schemaVersion: UInt64 = 0,
                migrationBlock: MigrationBlock? = nil,
                deleteRealmIfMigrationNeeded: Bool = false,
                shouldCompactOnLaunch: (@Sendable (Int, Int) -> Bool)? = nil,
                objectTypes: [ObjectBase.Type]? = nil,
                seedFilePath: URL? = nil)

    Parâmetros

    fileURL

    A URL local para o Arquivo de Realm.

    inMemoryIdentifier

    Uma string usada para identificar um determinado Realm na memória.

    encryptionKey

    Uma chave opcional de 64 bytes para criptografar os dados.

    readOnly

    Se o Realm é somente leitura (deve ser verdadeiro para arquivos somente leitura).

    schemaVersion

    A versão atual do esquema.

    migrationBlock

    O bloco que migra o Realm para a versão atual.

    deleteRealmIfMigrationNeeded

    Se true, recrie o arquivo Realm com o esquema fornecido se uma migração for necessária.

    shouldCompactOnLaunch

    Um bloco chamado ao abrir um Realm pela primeira vez durante a vida útil de um processo para determinar se ele deve ser compactado antes de ser retornado ao usuário. É passado o tamanho total do arquivo (dados + espaço livre) e o total de bytes usados pelos dados no arquivo.

                               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.
    
    objectTypes

    O subconjunto de subclasses Object e EmbeddedObject persistiu no Realm.

    seedFilePath

    O caminho para o Arquivo de Realm que será copiado para o arquivoURL quando aberto pela primeira vez.

Propriedades de configuração

  • A URL local do Arquivo de Realm. Mutuamente exclusivo com inMemoryIdentifier.

    Declaração

    Swift

    public var fileURL: URL? { get set }
  • Uma string usada para identificar um determinado Realm na memória. Mutuamente exclusivo com fileURL.

    Declaração

    Swift

    public var inMemoryIdentifier: String? { get set }
  • Uma chave de 64 bytes para utilizar para criptografar os dados, ou nil se a criptografia não estiver habilitada.

    Declaração

    Swift

    public var encryptionKey: Data?
  • Se o Realm deve ser aberto no modo somente leitura.

    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.

    Declaração

    Swift

    public var readOnly: Bool
  • A versão atual do esquema.

    Declaração

    Swift

    public var schemaVersion: UInt64
  • O bloco que migra o Realm para a versão atual.

    Declaração

    Swift

    @preconcurrency
    public var migrationBlock: MigrationBlock?
  • Se o Arquivo de Realm deve ser recriado com o esquema fornecido se uma migração for necessária. Esse é o caso quando o esquema armazenado é diferente do esquema fornecido ou a versão do esquema armazenado é diferente da versão nessa configuração. Configurar esta propriedade para true exclui o arquivo se uma migração fosse exigida ou executada de outra forma.

    Observação

    Definir essa propriedade como true não desabilita as migrações de formato de arquivo.

    Declaração

    Swift

    public var deleteRealmIfMigrationNeeded: Bool
  • Um bloco chamado ao abrir um Realm pela primeira vez durante a vida útil de um processo para determinar se ele deve ser compactado antes de ser retornado ao usuário. É passado o tamanho total do arquivo (dados + espaço livre) e o total de bytes usados pelos dados no arquivo.

    Retorne true para indicar que uma tentativa de compactar o arquivo deve ser feita. A compactação será ignorada se outro processo estiver acessando-a.

    Declaração

    Swift

    @preconcurrency
    public var shouldCompactOnLaunch: (@Sendable (Int, Int) -> Bool)?
  • As classes managed pelo Realm.

    Declaração

    Swift

    public var objectTypes: [ObjectBase.Type]? { get set }
  • O número máximo de versões ativas no Arquivo de Realm antes que uma exceção seja lançada ao tentar iniciar uma transação de escrita.

    O Realm fornece isolamento de snapshot MVCC, o que significa que as gravações em um thread não substituem os dados que estão sendo lidos em outro thread e, em vez disso, gravam uma nova cópia desses dados. Quando um Realm é atualizado, ele atualiza para a versão mais recente dos dados e libera as versões antigas, permitindo que elas sejam substituídas por transação de escrita subsequentes.

    Em circunstâncias normais, isso não é um problema, mas se o número de versões ativas aumentar demais, isso terá um efeito negativo no tamanho do arquivo no disco. Isso pode acontecer ao realizar gravações em muitos threads diferentes de uma só vez, ao manter objetos congelados por um longo período de tempo ou ao realizar longas operações em threads em segundo plano que não permitem a atualização do Realm.

    Definir essa propriedade como um valor diferente de zero faz com que exceder o número de versões definido gere uma exceção. Isso pode ser usado com um valor baixo durante o desenvolvimento para ajudar a identificar locais que podem ser problemáticos, ou no uso de produção para fazer com que o aplicativo falhe em vez de produzir um Arquivo de Realm que é muito grande para ser aberto.

    Declaração

    Swift

    public var maximumNumberOfActiveVersions: UInt?
  • Ao abrir o Realm pela primeira vez, em vez de criar um arquivo vazio, o arquivo Realm será copiado do caminho do arquivo de semente fornecido e usado em vez disso. Isso pode ser usado para abrir um Arquivo de Realm com dados pré-preenchidos.

    Se um Arquivo de Realm já existir no caminho de destino das configurações, o arquivo de semente não será copiado e o Realm já existente será aberto em seu lugar.

    Esta opção é mutuamente exclusiva com inMemoryIdentifier. Definir um seedFilePath eliminará o inMemoryIdentifier.

    Declaração

    Swift

    public var seedFilePath: URL?

CustomStringConvertible

  • Uma descrição legível por humanos do valor da configuração.

    Declaração

    Swift

    public var description: String { get }

Equalizável