RLMRealmConfiguration
Objective-C
@interface RLMRealmConfiguration : NSObject <NSCopying>
Swift
@_nonSendable(_assumed) class RLMRealmConfiguration : NSObject, NSCopying
Uma instância RLMRealmConfiguration
descreve as diferentes opções usadas para criar uma instância de um Realm.
RLMRealmConfiguration
instâncias são simplesmente NSObject
s. Ao contrário RLMRealm
s e RLMObject
s, eles podem ser compartilhados livremente entre threads, desde que você não os altere.
Criar objetos de configuração para subconjuntos de classes (definindo a propriedade objectClasses
) pode ser caro. Por esse motivo, normalmente você desejará armazenar em cache e reutilizar um único objeto de configuração para cada configuração distinta, em vez de criar um novo objeto sempre que abrir um Realm.
-
Retorna a configuração padrão usada para criar Realms quando nenhuma outra configuração é explicitamente especificada (ou seja,
+[RLMRealm defaultRealm]
).Declaração
Objective-C
+ (nonnull instancetype)defaultConfiguration;
Swift
class func `default`() -> Self
Valor de retorno
A configuração padrão do Realm.
-
Define a configuração padrão para o
RLMRealmConfiguration
fornecido.Declaração
Objective-C
+ (void)setDefaultConfiguration:(nonnull RLMRealmConfiguration *)configuration;
Swift
class func setDefault(_ configuration: RLMRealmConfiguration)
Parâmetros
configuration
A nova configuração padrão do Realm.
-
A URL local do Arquivo de Realm. Mutuamente exclusivo com
inMemoryIdentifier
; definir uma das duas propriedades eliminará automaticamente a outra.Declaração
Objective-C
@property (nonatomic, copy, nullable) NSURL *fileURL;
Swift
var fileURL: URL? { get set }
-
Uma string usada para identificar um determinado Realm na memória. Mutuamente exclusivo com
fileURL
eseedFilePath
. A definição de um identificador na memória eliminará automaticamente os outros dois.Declaração
Objective-C
@property (nonatomic, copy, nullable) NSString *inMemoryIdentifier;
Swift
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
Objective-C
@property (nonatomic, copy, nullable) NSData *encryptionKey;
Swift
var encryptionKey: Data? { get set }
-
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 execuçã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
Objective-C
@property (nonatomic) BOOL readOnly;
Swift
var readOnly: Bool { get set }
-
A versão atual do esquema.
Declaração
Objective-C
@property (nonatomic) uint64_t schemaVersion;
Swift
var schemaVersion: UInt64 { get set }
-
O bloco que migra o Realm para a versão atual.
Declaração
Objective-C
@property (nonatomic, copy, nullable) RLMMigrationBlock migrationBlock;
Swift
var migrationBlock: RLMMigrationBlock? { get set }
-
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
YES
exclui o arquivo se uma migração fosse exigida ou executada de outra forma.Observação
Definir essa propriedade comoYES
não desabilita as migrações de formato de arquivo.Declaração
Objective-C
@property (nonatomic) BOOL deleteRealmIfMigrationNeeded;
Swift
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
YES
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
Objective-C
@property (nonatomic, copy, nullable) RLMShouldCompactOnLaunchBlock shouldCompactOnLaunch;
Swift
var shouldCompactOnLaunch: RLMShouldCompactOnLaunchBlock? { get set }
-
As classes managed pelo Realm.
Declaração
Objective-C
@property (nonatomic, copy, nullable) NSArray *objectClasses;
Swift
var objectClasses: [Any]? { 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
Objective-C
@property (nonatomic) NSUInteger maximumNumberOfActiveVersions;
Swift
var maximumNumberOfActiveVersions: UInt { get set }
-
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 da configuração, 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
[RLMRealm writeCopyForConfiguration:]
primeiro.Esta opção é mutuamente exclusiva com
inMemoryIdentifier
. Definir umseedFilePath
eliminará oinMemoryIdentifier
.Declaração
Objective-C
@property (nonatomic, copy, nullable) NSURL *seedFilePath;
Swift
var seedFilePath: URL? { get set }