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

    Os parâmetros fileURL e inMemoryIdentifier são mutuamente exclusivos. Defina apenas um deles, ou nenhum se quiser usar o URL do arquivo padrão. Os Realms sincronizados definirão um caminho de arquivo exclusivo, a menos que seja um Realm na memória.

    Declaração

    Swift

    @preconcurrency
    public init(fileURL: URL? = URL(fileURLWithPath: RLMRealmPathForFile("default.realm"), isDirectory: false),
                inMemoryIdentifier: String? = nil,
                syncConfiguration: SyncConfiguration? = 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.

    syncConfiguration

    Para Realms destinados a sincronizar com o Atlas App Services, uma configuração de sincronização.

    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

  • Um valor de configuração usado para configurar um Realm para sincronização com o Atlas App Services.

    Declaração

    Swift

    public var syncConfiguration: SyncConfiguration? { get set }
  • 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.

    Para Realms não sincronizados, isso é necessário para poder abrir Arquivo de Realm que não são graváveis ou estão em um diretório que não é gravável. Isso só deve ser usado em arquivos que não serão modificados por qualquer pessoa enquanto estiverem abertos, e não apenas para obter uma visualização somente para leitura de um arquivo que pode ser gravado por outro thread ou processo. A abertura no modo somente leitura requer a desativação da coordenação de leitor/gravador do Realm, portanto, a confirmação de uma transação de escrita de outro processo resultará em falhas.

    Os Realm sincronizados devem ser sempre graváveis (caso contrário, nenhuma sincronização poderia acontecer), e isso apenas não permite a realização de transação de escrita no Realm. Além disso, ele ignorará algumas gravações automáticas feitas no Realm, como para inicializar o esquema do Realm. A configuração readOnly = YES não é estritamente necessária para os Realms aos quais o usuário de sincronização não tem acesso de gravação, mas é altamente recomendada, pois melhorará a comunicação de erros e detectará alguns erros mais cedo.

    Os domínios que usam a sincronização baseada em query não podem ser abertos no modo somente leitura.

    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 { get set }
  • 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.

    Observe que, para usar esse parâmetro com uma configuração de Realm sincronizada, o Realm semente deve ser copiado adequadamente para um destino com Realm.writeCopy(configuration:) primeiro.

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

    Declaração

    Swift

    public var seedFilePath: URL?
  • Configuração para gravação de eventos do Realm. Os eventos serão habilitados se isso for definido como um valor não nulo.

    Declaração

    Swift

    public var eventConfiguration: EventConfiguration?

CustomStringConvertible

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

    Declaração

    Swift

    public var description: String { get }

Equalizável