Configuração
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 Realm
s e Object
s, 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.
-
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 }
-
init(fileURL:
inMemoryIdentifier: syncConfiguration: encryptionKey: readOnly: schemaVersion: migrationBlock: deleteRealmIfMigrationNeeded: shouldCompactOnLaunch: objectTypes: seedFilePath: ) Cria um
Configuration
que pode ser utilizado para criar novas instânciasRealm
.Observação
Os parâmetros
fileURL
einMemoryIdentifier
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
eEmbeddedObject
persistiu no Realm.seedFilePath
O caminho para o Arquivo de Realm que será copiado para o arquivoURL quando aberto pela primeira vez.
-
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 comotrue
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 umseedFilePath
eliminará oinMemoryIdentifier
.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?
-
Uma descrição legível por humanos do valor da configuração.
Declaração
Swift
public var description: String { get }