RLMRealm
Objective-C
@interface RLMRealm : NSObject
Swift
@_nonSendable(_assumed) class RLMRealm : NSObject
Uma instância RLMRealm
(também conhecida como "um Realm") representa um reconhecimento de data center Realm.
Os domínios podem ser armazenados no disco (consulte +[RLMRealm realmWithURL:]
) ou na memória (consulte RLMRealmConfiguration
).
RLMRealm
as instâncias são armazenadas em cache internamente e a construção de objeto RLMRealm
equivalentes (por exemplo, usando o mesmo caminho ou identificador) várias vezes em um único thread em uma única iteração do loop de eventos normalmente retornará o mesmo objeto RLMRealm
.
Se você quiser especificamente garantir que uma instância RLMRealm
seja destruída (por exemplo, se você deseja abrir um Realm, verificar uma propriedade e, em seguida, possivelmente excluir o Arquivo de Realm e reabri-lo), coloque o código que usa o Realm dentro de um @autoreleasepool {}
e certifique-se de que você não tenha outras referências fortes para ele.
Aviso
As instânciasRLMRealm
não congeladas são confinadas por threads e não podem ser compartilhadas entre threads ou filas de despacho. Tentar fazer isso fará com que uma exceção seja lançada. Você deve chamar esse método em cada thread em que deseja interagir com o Realm. Para filas de despacho, isso significa que você deve chamá-la em cada bloco despachado, pois não é garantido que uma fila execute todos os seus blocos no mesmo thread.
-
Obtém uma instância do Realm padrão.
O Realm padrão é utilizado pelos métodos de classe
RLMObject
que não utilizam um parâmetroRLMRealm
, mas de outra forma não é especial. O Realm padrão é mantido como default.realm no diretório documento da sua aplicação no iOS, no diretório de aplicação Support da sua aplicação no macOS e no diretório de Cache no tvOS.O Realm padrão é criado usando o
RLMRealmConfiguration
padrão, que pode ser alterado por meio+[RLMRealmConfiguration setDefaultConfiguration:]
.Declaração
Objective-C
+ (nonnull instancetype)defaultRealm;
Swift
class func `default`() -> Self
Valor de retorno
A instância
RLMRealm
padrão para o thread atual. -
Obtém uma instância do Realm padrão vinculado à fila fornecida.
Em vez de ficarem confinados ao thread em que são abertos, os RLMRealms vinculados à fila estão confinados à fila fornecida. Eles podem ser acessados de qualquer thread, desde que seja de dentro de um despacho de blocos para a fila, e as notificações serão entregues na fila em vez do loop de eventos de um thread.
Os domínios só podem ser confinados a uma fila em série. As instâncias de RLMRealm confinadas em fila podem ser obtidas quando não estiverem nessa fila, mas tentar fazer qualquer coisa com essa instância sem primeiro despachá-la para a fila lançará uma exceção de thread incorreta.
O Realm padrão é criado usando o
RLMRealmConfiguration
padrão, que pode ser alterado por meio+[RLMRealmConfiguration setDefaultConfiguration:]
.Declaração
Objective-C
+ (nonnull instancetype)defaultRealmForQueue:(nonnull dispatch_queue_t)queue;
Swift
class func defaultRealm(for queue: dispatch_queue_t) -> Self
Parâmetros
queue
Uma fila de despacho em série à qual confinar o Realm.
Valor de retorno
A instância
RLMRealm
padrão para a fila fornecida. -
Obtém uma instância
RLMRealm
com a configuração fornecida.Declaração
Objective-C
+ (nullable instancetype) realmWithConfiguration:(nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
convenience init(configuration: RLMRealmConfiguration) throws
Parâmetros
configuration
Um objeto de configuração para usar ao criar o Realm.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
Uma instância
RLMRealm
. -
Obtém uma instância
RLMRealm
com a configuração fornecida vinculada à fila fornecida.Em vez de ficarem confinados ao thread em que são abertos, os RLMRealms vinculados à fila estão confinados à fila fornecida. Eles podem ser acessados de qualquer thread, desde que seja de dentro de um despacho de blocos para a fila, e as notificações serão entregues na fila em vez do loop de eventos de um thread.
Os domínios só podem ser confinados a uma fila em série. As instâncias de RLMRealm confinadas em fila podem ser obtidas quando não estiverem nessa fila, mas tentar fazer qualquer coisa com essa instância sem primeiro despachá-la para a fila lançará uma exceção de thread incorreta.
Declaração
Objective-C
+ (nullable instancetype) realmWithConfiguration:(nonnull RLMRealmConfiguration *)configuration queue:(nullable dispatch_queue_t)queue error:(NSError *_Nullable *_Nullable)error;
Swift
convenience init(configuration: RLMRealmConfiguration, queue: dispatch_queue_t?) throws
Parâmetros
configuration
Um objeto de configuração para usar ao criar o Realm.
queue
Uma fila de despacho em série à qual confinar o Realm.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
Uma instância
RLMRealm
. -
Obtém uma instância
RLMRealm
persistente em uma URL de arquivo especificada.Declaração
Objective-C
+ (nonnull instancetype)realmWithURL:(nonnull NSURL *)fileURL;
Swift
convenience init(url fileURL: URL)
Parâmetros
fileURL
A URL local do arquivo em que o Realm deve ser salvo.
Valor de retorno
Uma instância
RLMRealm
. -
Abra de forma assíncrona um Realm e entregue-o a um bloco na fila fornecida.
A abertura de um Realm de forma assíncrona executará todo o trabalho necessário para colocar o Realm em um estado utilizável (como a execução de migrações potencialmente demoradas) em um thread em segundo plano antes de ser enviado para a fila fornecida. Além disso, os Realms sincronizados aguardam que todo o conteúdo remoto disponível no momento em que a operação começou seja baixado e esteja disponível localmente.
O realm passado para a função da chamada de resposta está confinado à fila da chamada de resposta como se
-[RLMRealm realmWithConfiguration:queue:error]
fosse usado.Declaração
Objective-C
+ (nonnull RLMAsyncOpenTask *) asyncOpenWithConfiguration:(nonnull RLMRealmConfiguration *)configuration callbackQueue:(nonnull dispatch_queue_t)callbackQueue callback:(nonnull RLMAsyncOpenRealmCallback)callback;
Swift
class func asyncOpen(with configuration: RLMRealmConfiguration, callbackQueue: dispatch_queue_t, callback: @escaping RLMAsyncOpenRealmCallback) -> RLMAsyncOpenTask
Parâmetros
configuration
Um objeto de configuração para usar ao abrir o Realm.
callbackQueue
A fila de despacho em série na qual a chamada de resposta deve ser executada.
callback
Um bloco de chamada de resposta. Se o Realm foi aberto com sucesso, ele será passado como um argumento. Caso contrário, um
NSError
descrevendo o que deu errado será passado para o bloco. -
Indica se o Realm está atualmente envolvido em uma transação de escrita.
Aviso
Não basta verificar esta propriedade e, em seguida, iniciar uma transação de escrita sempre que um objeto precisar ser criado, atualizado ou removido. Isso pode fazer com que um grande número de transação de escrita seja criada, degradando o desempenho. Em vez disso, prefira sempre realizar várias atualizações durante uma única transação.Declaração
Objective-C
@property (nonatomic, readonly) BOOL inWriteTransaction;
Swift
var inWriteTransaction: Bool { get }
-
O objeto
RLMRealmConfiguration
que foi usado para criar esta instânciaRLMRealm
.Declaração
Objective-C
@property (nonatomic, readonly) RLMRealmConfiguration *_Nonnull configuration;
Swift
var configuration: RLMRealmConfiguration { get }
-
Indica se este Realm contém algum objeto.
Declaração
Objective-C
@property (nonatomic, readonly) BOOL isEmpty;
Swift
var isEmpty: Bool { get }
-
Indica se este Realm está congelado.
Veja
-[RLMRealm freeze]
Declaração
Objective-C
@property (nonatomic, readonly, getter=isFrozen) BOOL frozen;
Swift
var isFrozen: Bool { get }
-
Retorna um snapshot congelado (imutável) deste Realm.
Um Realm congelado é uma visualização de snapshot imutável de uma versão específica dos dados de um Realm. Ao contrário das instâncias normais do RLMRealm, ele não é atualizado ao vivo para refletir as gravações feitas no Realm e pode ser acessado a partir de qualquer thread. Não é permitido gravar em um Realm congelado, e tentar iniciar uma transação de escrita lançará uma exceção.
Todos os objeto e collection lidos de um Realm congelado também serão congelados.
Declaração
Objective-C
- (nonnull RLMRealm *)freeze;
Swift
func freeze() -> RLMRealm
-
Retorna uma referência ativa deste Realm.
Todos os objetos e coleções lidos do Realm retornado não serão mais congelados. Este método retornará
self
se ainda não estiver congelado.Declaração
Objective-C
- (nonnull RLMRealm *)thaw;
Swift
func thaw() -> RLMRealm
-
Grava uma cópia compactada e opcionalmente criptografada do Realm na URL local fornecida.
O arquivo de destino já não pode existir.
Observe que, se esse método for chamado de dentro de uma transação de gravação, os dados atuais serão gravados, não os dados do ponto em que a transação de escrita anterior foi confirmada.
Declaração
Objective-C
- (BOOL)writeCopyToURL:(nonnull NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError *_Nullable *_Nullable)error;
Swift
func writeCopy(to fileURL: URL, encryptionKey key: Data?) throws
Parâmetros
fileURL
URL local na qual salvar o Realm.
key
Chave de criptografia opcional de 64 bytes para criptografar o novo arquivo.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
YES
se o Realm foi gravado com sucesso no disco,NO
se ocorreu um erro. -
Grava uma cópia do Realm em um determinado local especificado por uma determinada configuração.
Se a configuração fornecida for derivada de um
RLMUser
, este Realm será copiado com a funcionalidade de sincronização habilitada.O arquivo de destino já não pode existir.
Declaração
Objective-C
- (BOOL)writeCopyForConfiguration:(nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
func writeCopy(for configuration: RLMRealmConfiguration) throws
Parâmetros
configuration
Uma configuração de Realm.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
YES
se o Realm foi gravado com sucesso no disco,NO
se ocorreu um erro. -
Verifica se o arquivo de Realm para a configuração fornecida existe localmente no disco.
Para Realms não sincronizados e não na memória, isso é equivalente a
-[NSFileManager.defaultManager fileExistsAtPath:config.path]
. Para Realms sincronizados, ele se encarrega de calcular o caminho real no disco com base no servidor, no caminho virtual e no usuário, como é feito ao abrir o Realm.Declaração
Objective-C
+ (BOOL)fileExistsForConfiguration:(nonnull RLMRealmConfiguration *)config;
Swift
class func fileExists(for config: RLMRealmConfiguration) -> Bool
Parâmetros
config
Uma configuração do Realm para verificar a existência.
Valor de retorno
YES se o Arquivo de Realm para a configuração fornecida existir no disco, NO caso contrário.
-
Exclui o Arquivo de Realm local e os arquivos temporários associados à configuração fornecida.
Isso exclui os arquivos ".realm", ".note" e ".management" que seriam criados ao abrir o Realm com a configuração fornecida. Ele não exclui o arquivo de bloqueio (que não contém dados persistentes e é recriado do zero toda vez que o Arquivo de Realm é aberto).
O Realm não deve estar atualmente aberto em nenhum thread ou em outro processo. Se for, isso retornará NO e relatará o erro RLMErrorAlreadyOpen. A tentativa de abrir o Realm em outro thread enquanto a exclusão está ocorrendo bloqueará (e, em seguida, criará um novo Realm e abrirá-o depois).
Se o Realm ainda não existir, isso retornará
NO
e relatará o erro NSFileNoSuchFileError;Declaração
Objective-C
+ (BOOL)deleteFilesForConfiguration:(nonnull RLMRealmConfiguration *)config error:(NSError *_Nullable *_Nullable)error;
Swift
class func deleteFiles(for config: RLMRealmConfiguration) throws -> Bool
Parâmetros
config
Uma configuração de Realm que identifica o Realm a ser excluído.
Valor de retorno
YES se algum arquivo foi excluído, NO caso contrário.
-
Adiciona um manipulador de notificações para alterações nesse Realm e retorna um token de notificação.
Os manipuladores de notificações são chamados após cada transação de escrita ser confirmada, na thread atual ou em outras threads.
Os blocos manipuladores são chamados no mesmo thread em que foram adicionados e só podem ser adicionados em threads que estejam atualmente dentro de um loop de eventos. A menos que você esteja criando e executando especificamente um loop de eventos em um thread em segundo plano, esse normalmente será apenas o thread principal.
O bloco tem a seguinte definição:
typedef void(^RLMNotificationBlock)(RLMNotification notification, RLMRealm *realm);
Ele recebe os seguintes parâmetros:
NSString
*notificação: o nome da notificação recebida. ConsulteRLMRealmNotification
para obter informações sobre quais notificações são enviadas.RLMRealm
*realm: o Realm para o qual ocorreu esta notificação.
Declaração
Objective-C
- (nonnull RLMNotificationToken *)addNotificationBlock: (nonnull RLMNotificationBlock)block;
Swift
func addNotificationBlock(_ block: @escaping RLMNotificationBlock) -> RLMNotificationToken
Parâmetros
block
Um bloco chamado para processar as notificações do Realm.
Valor de retorno
Um objeto de token que deve ser mantido enquanto você desejar continuar recebendo notificações de alteração.
-
Inicia uma transação de escrita no Realm.
Somente uma transação de escrita pode ser aberta por vez para cada Arquivo de Realm. As transações de escrita não podem ser aninhadas, e tentar iniciar uma transação de escrita em um Realm que já esteja em uma transação de escrita lançará uma exceção. As chamadas para
beginWriteTransaction
de instânciasRLMRealm
para o mesmo Arquivo de Realm em outras threads ou outros processos serão bloqueadas até que a transação de escrita atual seja concluída ou cancelada.Antes de iniciar a transação de escrita, o
beginWriteTransaction
atualiza a instância doRLMRealm
para a Versão do Realm, como se orefresh
tivesse sido chamado e gera notificações, se aplicável. Isso não tem efeito se o Realm já estiver atualizado.Raramente é uma boa ideia que as transação de escrita abrangem vários ciclos do loop de eventos, mas se você desejar fazer isso, precisará garantir que o Realm que participa da transação de escrita seja mantido ativo até que a transação de escrita seja confirmada.
Declaração
Objective-C
- (void)beginWriteTransaction;
Swift
func beginWriteTransaction()
-
Confirma todas as operações de gravação na transação de escrita atual e termina a transação.
Após salvar as alterações, todos os blocos de notificação registrados nesta instância
RLMRealm
específica são invocados de forma síncrona. Os blocos de notificação registrados em outros threads ou em collection são invocados de forma assíncrona. Se você não quiser receber uma notificação específica para esta transação de escrita, consultecommitWriteTransactionWithoutNotifying:error:
.Esse método pode falhar se não houver espaço em disco suficiente disponível para salvar as gravações feitas ou devido a erros inesperados de E/S. Esta versão do método lança uma exceção quando ocorrem erros. Use a versão com um parâmetro de saída
NSError
se desejar lidar com erros.Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)commitWriteTransaction;
-
Confirma todas as operações de gravação na transação de escrita atual e termina a transação.
Após salvar as alterações, todos os blocos de notificação registrados nesta instância
RLMRealm
específica são invocados de forma síncrona. Os blocos de notificação registrados em outros threads ou em collection são invocados de forma assíncrona. Se você não quiser receber uma notificação específica para esta transação de escrita, consultecommitWriteTransactionWithoutNotifying:error:
.Esse método pode falhar se não houver espaço em disco suficiente disponível para salvar as gravações feitas ou devido a erros inesperados de E/S.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (BOOL)commitWriteTransaction:(NSError *_Nullable *_Nullable)error;
Swift
func commitWriteTransaction() throws
Parâmetros
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
Se a transação foi bem-sucedida.
-
Compromete todas as operações de gravação na transação de escrita atual, sem notificar blocos de notificação específicos das alterações.
Após salvar as alterações, todos os blocos de notificação registrados nesta instância
RLMRealm
específica são invocados de forma síncrona. Os blocos de notificação registrados em outros threads ou em collection estão agendados para serem invocados de forma assíncrona.Você pode ignorar a notificação de blocos de notificações específicos sobre as alterações feitas nessa transação de escrita passando seus tokens de notificação associados. Isso é útil principalmente quando a transação de escrita está salvando as alterações já feitas na interface do usuário e você não deseja que o bloqueio de notificação tente reaplicar as mesmas alterações.
Os tokens passados para este método devem ser para notificações para esta instância
RLMRealm
específica. As notificações de threads diferentes não podem ser ignoradas usando esse método.Esse método pode falhar se não houver espaço em disco suficiente disponível para salvar as gravações feitas ou devido a erros inesperados de E/S.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (BOOL)commitWriteTransactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens error:(NSError *_Nullable *_Nullable) error;
Swift
func commitWriteTransactionWithoutNotifying(_ tokens: [RLMNotificationToken]) throws
Parâmetros
tokens
Uma array de tokens de notificação que foram retornados após a adição de chamadas de resposta que você não deseja que sejam notificadas sobre as alterações feitas nessa transação de escrita.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
Se a transação foi bem-sucedida.
-
Reverte todas as gravações feitas durante a transação de escrita atual e encerra a transação.
Isso reverte todos os objetos no Realm para o estado em que estavam no início da transação de escrita e, em seguida, encerra a transação.
Isso restaura os dados dos objetos excluídos, mas não revigora as instâncias de objetos invalidados. Quaisquer
RLMObject
s que foram adicionados ao Realm serão invalidados em vez de se tornarem não gerenciados. Dado o seguinte código:ObjectType *oldObject = [[ObjectType objectsWhere:@"..."] firstObject]; ObjectType *newObject = [[ObjectType alloc] init]; [realm beginWriteTransaction]; [realm addObject:newObject]; [realm deleteObject:oldObject]; [realm cancelWriteTransaction];
Tanto
oldObject
quantonewObject
retornarãoYES
paraisInvalidated
, mas a reexecução da query que forneceuoldObject
retornará novamente o objeto válido.Os observadores da KVO em quaisquer objetos que foram modificados durante a transação serão notificados sobre a alteração de volta aos seus valores iniciais, mas nenhuma outra notificação será produzida por uma transação de escrita cancelada.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Objective-C
- (void)cancelWriteTransaction;
Swift
func cancelWriteTransaction()
-
Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.
Veja
[RLMRealm transactionWithoutNotifying:block:error:]
Declaração
Objective-C
- (void)transactionWithBlock:(nonnull void (^)(void))block;
-
Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.
Veja
[RLMRealm transactionWithoutNotifying:block:error:]
Declaração
Objective-C
- (BOOL)transactionWithBlock:(nonnull void (^)(void))block error:(NSError *_Nullable *_Nullable)error;
Swift
func transaction(_ block: () -> Void) throws
-
Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.
Veja
[RLMRealm transactionWithoutNotifying:block:error:]
Declaração
Objective-C
- (void)transactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens block:(nonnull void (^)(void))block;
Swift
func transactionWithoutNotifying(_ tokens: [RLMNotificationToken], block: () -> Void)
-
Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.
As transações de escrita não podem ser aninhadas, e tentar executar uma transação de escrita em um Realm que já esteja participando de uma transação de escrita lançará uma exceção. As chamadas para
transactionWithBlock:
de instânciasRLMRealm
em outros threads serão bloqueadas até que a transação de escrita atual seja concluída.Antes de iniciar a transação de escrita, o
transactionWithBlock:
atualiza a instância doRLMRealm
para a Versão do Realm, como se orefresh
tivesse sido chamado e gera notificações, se aplicável. Isso não tem efeito se o Realm já estiver atualizado.Você pode ignorar a notificação de blocos de notificações específicos sobre as alterações feitas nessa transação de escrita passando seus tokens de notificação associados. Isso é útil principalmente quando a transação de escrita está salvando as alterações já feitas na interface do usuário e você não deseja que o bloqueio de notificação tente reaplicar as mesmas alterações.
Os tokens passados para este método devem ser para notificações para esta instância
RLMRealm
específica. As notificações de threads diferentes não podem ser ignoradas usando esse método.Declaração
Objective-C
- (BOOL)transactionWithoutNotifying: (nonnull NSArray<RLMNotificationToken *> *)tokens block:(nonnull void (^)(void))block error:(NSError *_Nullable *_Nullable)error;
Swift
func transactionWithoutNotifying(_ tokens: [RLMNotificationToken], block: () -> Void, error: ()) throws
Parâmetros
tokens
Uma array de tokens de notificação que foram retornados após a adição de chamadas de resposta que você não deseja que sejam notificadas sobre as alterações feitas nessa transação de escrita.
block
O bloco contendo ação a serem executadas.
error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
Se a transação foi bem-sucedida.
-
Indica se o Realm está executando operações de gravação assíncrona no momento. Isso se torna YES após uma chamada para
beginAsyncWriteTransaction
,commitAsyncWriteTransaction
ouasyncTransactionWithBlock:
, e permanece assim até que todo o trabalho de gravação assíncrona agendado seja concluído.Aviso
Se isso forYES
, fechar ou invalidar o Realm bloqueará até que o trabalho agendado seja concluído.Declaração
Objective-C
@property (nonatomic, readonly) BOOL isPerformingAsynchronousWriteOperations;
Swift
var isPerformingAsynchronousWriteOperations: Bool { get }
-
Inicia uma transação de escrita assíncrona. Essa função inicia de forma assíncrona uma transação de escrita em um thread em segundo plano e, em seguida, invoca o bloqueio na thread ou fila original assim que a transação começa. Ao contrário de
beginWriteTransaction
, isso não bloqueará o thread de chamada se outro thread estiver atual dentro de uma transação de escrita e sempre retornará imediatamente. Várias chamadas para esta função (ou para as outras funções que executam transação de escrita assíncrona) enfileirarão os blocos a serem chamados na mesma ordem em que foram enfileirados. Isso inclui chamadas de dentro de um bloco de transação de escrita que, ao contrário da transação síncrona, são permitidas.Declaração
Objective-C
- (RLMAsyncTransactionId)beginAsyncWriteTransaction: (nonnull void (^)(void))block;
Swift
func beginAsyncWriteTransaction(_ block: @escaping () -> Void) -> RLMAsyncTransactionId
Parâmetros
block
O bloco contendo ação a serem executadas dentro da transação de escrita.
block
deve terminar chamandocommitAsyncWriteTransaction
,commitWriteTransaction
oucancelWriteTransaction
. Retornar sem uma dessas chamadas é equivalente a chamarcancelWriteTransaction
.Valor de retorno
Um ID que identifica a transação assíncrona que pode ser passada para
cancelAsyncTransaction:
antes do bloco ser chamado para cancelar a invocação pendente do bloco. -
Confirma de forma assíncrona uma transação de escrita. A chamada retorna imediatamente, permitindo que o chamador continue enquanto a E/S é realizada em um thread dedicado em segundo plano. Isso pode ser usado independentemente de a transação de escrita ter sido iniciada com
beginWriteTransaction
oubeginAsyncWriteTransaction
.Declaração
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction: (nullable void (^)(NSError *_Nullable)) completionBlock allowGrouping:(BOOL)allowGrouping;
Swift
@_unsafeInheritExecutor func commitAsyncWriteTransaction(_ completionBlock: (((any Error)?) -> Void)?, allowGrouping: Bool) -> RLMAsyncTransactionId
Parâmetros
completionBlock
Um bloco que será chamado no thread ou fila de origem assim que o commit for concluído ou falhar com um erro.
allowGrouping
Se
YES
, várias chamadas sequenciais paracommitAsyncWriteTransaction:
podem ser agrupadas em lote e persistidas para armazenamento estável em um grupo. Isso melhora o desempenho de gravação, especialmente quando a transação individuais em lote são pequenas. No evento de uma falha de energia, todas as transação agrupadas serão perdidas ou nenhuma será, em vez da garantia usual de que os dados foram mantidos assim que uma chamada para commit for retornada.Valor de retorno
Um ID que identifica o commit da transação assíncrona pode ser passado para
cancelAsyncTransaction:
antes do bloco de conclusão ser chamado para cancelar a invocação pendente do bloco. Observe que isso não cancela a confirmação em si. -
Confirma de forma assíncrona uma transação de escrita. A chamada retorna imediatamente, permitindo que o chamador continue enquanto a E/S é realizada em um thread dedicado em segundo plano. Isso pode ser usado independentemente de a transação de escrita ter sido iniciada com
beginWriteTransaction
oubeginAsyncWriteTransaction
.Declaração
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction: (nonnull void (^)(NSError *_Nullable))completionBlock;
Swift
func commitAsyncWriteTransaction(_ completionBlock: @escaping ((any Error)?) -> Void) -> RLMAsyncTransactionId
Parâmetros
completionBlock
Um bloco que será chamado no thread ou fila de origem assim que o commit for concluído ou falhar com um erro.
Valor de retorno
Um ID que identifica o commit da transação assíncrona pode ser passado para
cancelAsyncTransaction:
antes do bloco de conclusão ser chamado para cancelar a invocação pendente do bloco. Observe que isso não cancela a confirmação em si. -
Confirma de forma assíncrona uma transação de escrita. A chamada retorna imediatamente, permitindo que o chamador continue enquanto a E/S é realizada em um thread dedicado em segundo plano. Isso pode ser usado independentemente de a transação de escrita ter sido iniciada com
beginWriteTransaction
oubeginAsyncWriteTransaction
.Declaração
Objective-C
- (RLMAsyncTransactionId)commitAsyncWriteTransaction;
Swift
func commitAsyncWriteTransaction() -> RLMAsyncTransactionId
Valor de retorno
Um ID que identifica o commit da transação assíncrona pode ser passado para
cancelAsyncTransaction:
antes do bloco de conclusão ser chamado para cancelar a invocação pendente do bloco. Observe que isso não cancela a confirmação em si. -
Cancela um bloco em fila para uma transação assíncrona. Isso pode cancelar um bloco passado para um início assíncrono ou uma confirmação assíncrona. O cancelamento de um início cancela totalmente a transação, enquanto o cancelamento de um commit apenas cancela a invocação da chamada de resposta de conclusão, e o commit ainda ocorrerá. A transação só pode ser cancelada antes que o bloco seja invocado, e chamar
cancelAsyncTransaction:
de dentro do bloco é um no-op.Declaração
Objective-C
- (void)cancelAsyncTransaction:(RLMAsyncTransactionId)asyncTransactionId;
Swift
func cancelAsyncTransaction(_ asyncTransactionId: RLMAsyncTransactionId)
Parâmetros
asyncTransactionId
Uma ID de transação de
beginAsyncWriteTransaction:
oucommitAsyncWriteTransaction:
. -
Executa de forma assíncrona ação contidas no bloco fornecido dentro de uma transação de escrita. A transação de escrita é iniciada de forma assíncrona como se estivesse chamando
beginAsyncWriteTransaction:
e, por padrão, a transação é confirmada de forma assíncrona após a conclusão do bloco. Você também pode chamar explicitamentecommitWriteTransaction
oucancelWriteTransaction
de dentro do bloco para confirmar ou cancelar de forma síncrona a transação de escrita.Declaração
Objective-C
- (RLMAsyncTransactionId) asyncTransactionWithBlock:(nonnull void (^)(void))block onComplete: (nullable void (^)(NSError *_Nonnull))completionBlock;
Swift
func asyncTransaction(_ block: @escaping () -> Void, onComplete completionBlock: ((any Error) -> Void)? = nil) -> RLMAsyncTransactionId
Parâmetros
block
O bloco contendo ação a serem executadas.
completionBlock
Um bloco que será chamado no thread ou fila de origem assim que o commit for concluído ou falhar com um erro.
Valor de retorno
Um ID que identifica a transação assíncrona que pode ser passada para
cancelAsyncTransaction:
antes do bloco ser chamado para cancelar a invocação pendente do bloco. -
Executa de forma assíncrona ação contidas no bloco fornecido dentro de uma transação de escrita. A transação de escrita é iniciada de forma assíncrona como se estivesse chamando
beginAsyncWriteTransaction:
e, por padrão, a transação é confirmada de forma assíncrona após a conclusão do bloco. Você também pode chamar explicitamentecommitWriteTransaction
oucancelWriteTransaction
de dentro do bloco para confirmar ou cancelar de forma síncrona a transação de escrita.Declaração
Objective-C
- (RLMAsyncTransactionId)asyncTransactionWithBlock: (nonnull void (^)(void))block;
Swift
func asyncTransaction(_ block: @escaping () -> Void) -> RLMAsyncTransactionId
Parâmetros
block
O bloco contendo ação a serem executadas.
Valor de retorno
Um ID que identifica a transação assíncrona que pode ser passada para
cancelAsyncTransaction:
antes do bloco ser chamado para cancelar a invocação pendente do bloco. -
Atualiza o Realm e os objeto managed pelo Realm para ponto para os dados mais recentes.
Se a versão do Realm for realmente alterada, as notificações do Realm e da collection serão enviadas para refletir as alterações. Isso pode levar algum tempo, pois as notificações de collection são preparadas em um thread em segundo plano. Como resultado, chamar esse método no thread principal não é aconselhável.
Declaração
Objective-C
- (BOOL)refresh;
Swift
func refresh() -> Bool
Valor de retorno
Se houve atualizações para o Realm. Observe que
YES
pode ser retornado mesmo que nenhum dado seja realmente alterado. -
Defina esta propriedade como
YES
para atualizar automaticamente este Realm quando as alterações acontecerem em outros segmentos.Se definido como
YES
(o padrão), as alterações feitas em outras threads serão refletidas nesse Realm no próximo ciclo do loop de eventos após as alterações serem confirmadas. Se definido comoNO
, você deverá chamar manualmente-refresh
no Realm para atualizá-lo e obter os dados mais recentes.Observe que, por padrão, os threads em segundo plano não têm um loop de eventos ativo e você precisará chamar manualmente
-refresh
para atualizar para a versão mais recente, mesmo queautorefresh
esteja definido comoYES
.Mesmo com esta propriedade habilitada, você ainda pode chamar o
-refresh
a qualquer momento para atualizar o Realm antes que a atualização automática ocorra.As transações de gravação ainda sempre avançarão um Realm para a versão mais recente e produzirão notificações locais no commit, mesmo que a atualização automática esteja desabilitada.
Desativar
autorefresh
em um Realm sem referências fortes a ele não terá nenhum efeito, eautorefresh
será revertido paraYES
na próxima vez que o Realm for criado. Normalmente, isso é irrelevante, pois significa que não há nada para atualizar (já queRLMObject
s,RLMArray
s gerenciados eRLMResults
têm referências fortes para o Realm que os gerencia), mas significa que a configuraçãoRLMRealm.defaultRealm.autorefresh = NO
emapplication:didFinishLaunchingWithOptions:
e somente depois o armazenamento de objetos de Realm não funcionará.Padrão é
YES
.Declaração
Objective-C
@property (nonatomic) BOOL autorefresh;
Swift
var autorefresh: Bool { get set }
-
Invalida todos os
RLMObject
s,RLMResults
,RLMLinkingObjects
eRLMArray
s managed pelo Realm.Um Realm mantém um bloqueio de leitura na versão dos dados acessados por ele, de modo que as alterações feitas no Realm em diferentes threads não modifiquem ou excluam os dados vistos por este Realm. A chamada desse método libera o bloqueio de leitura, permitindo que o espaço usado no disco seja reutilizado por transação de escrita posterior, em vez de aumentar o arquivo. Esse método deve ser chamado antes de executar operações de bloqueio longas em um thread em segundo plano no qual você leu anteriormente dados do Realm que não são mais necessários.
Todas as instâncias
RLMObject
,RLMResults
eRLMArray
obtidas desta instânciaRLMRealm
na thread atual são invalidadas.RLMObject
s eRLMArray
s não podem ser usados.RLMResults
ficará vazio. O próprio Realm permanece válido e uma nova transação de leitura é implicitamente iniciada na próxima vez que os dados forem lidos do Realm.Chamar esse método várias vezes seguidas sem ler nenhum dado do Realm, ou antes de ler qualquer dado do Realm, é um modo autônomo.
Declaração
Objective-C
- (void)invalidate;
Swift
func invalidate()
-
Retorna o mesmo objeto que o referenciado quando o
RLMThreadSafeReference
foi criado pela primeira vez, mas resolvido para o Realm atual para este thread. Retornanil
se este objeto foi excluído depois que a referência foi criada.Aviso
Um objeto
RLMThreadSafeReference
deve ser resolvido no máximo uma vez. A não resolução de umRLMThreadSafeReference
fará com que a versão de origem do Realm seja fixada até que a referência seja desalocada. Uma exceção será lançada se uma referência for resolvida mais de uma vez.Aviso
Não é possível chamar dentro de uma transação de escrita.
Observação
Atualizará este Realm se o Realm de origem estiver em uma versão posterior a esta.
Declaração
Objective-C
- (nullable id)resolveThreadSafeReference: (nonnull RLMThreadSafeReference *)reference;
Parâmetros
reference
A referência segura de thread para o objeto confinado a thread para resolver neste Realm.
-
Adiciona um objeto ao Realm.
Depois de adicionado, esse objeto é considerado managed pelo Realm. Pode ser recuperado usando os seletores
objectsWhere:
emRLMRealm
e em subclasses deRLMObject
.Quando adicionados, todos os relacionamentos filhos referenciados por este objeto também serão adicionados ao Realm se ainda não estiverem nele.
Se o objeto ou quaisquer objeto já estiverem sendo managed por um Realm diferente, uma exceção será lançada. Use
-[RLMObject createInRealm:withObject:]
para inserir uma cópia de um managed objeto em um Realm diferente.O objeto a ser adicionado deve ser válido e não pode ter sido excluído anteriormente de um Realm (ou seja,
isInvalidated
deve serNO
).Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (void)addObject:(nonnull RLMObject *)object;
Swift
func add(_ object: RLMObject)
Parâmetros
object
O objeto a ser adicionado a este Realm.
-
Adiciona todos os objeto de uma collection ao Realm.
Isso é equivalente a chamar
addObject:
para cada objeto em uma collection.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Veja
addObject:
Declaração
Objective-C
- (void)addObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func addObjects(_ objects: any NSFastEnumeration)
Parâmetros
objects
Uma collection enumerável , como
NSArray
,RLMArray
ouRLMResults
, contendo Objeto de Realm a serem adicionados ao Realm. -
Adiciona ou atualiza um objeto existente no Realm.
O objeto fornecido deve ter uma chave primária designada. Se não existirem objetos no Realm com o mesmo valor de chave primária, o objeto será inserido. Caso contrário, o objeto existente é atualizado com quaisquer valores alterados.
Assim como em
addObject:
, o objeto ainda não pode ser managed por um diferente Realm. Use-[RLMObject createOrUpdateInRealm:withValue:]
para copiar valores para outro Realm.Se houver uma propriedade ou valor de KVC em
object
cujo valor for nulo, e ele corresponder a uma propriedade anulável em um objeto existente sendo atualizado, essa propriedade anulável será definida como nula.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (void)addOrUpdateObject:(nonnull RLMObject *)object;
Swift
func addOrUpdate(_ object: RLMObject)
Parâmetros
object
O objeto a ser adicionado ou atualizado.
-
Adiciona ou atualiza todos os objeto em uma collection no Realm.
Isso é equivalente a chamar
addOrUpdateObject:
para cada objeto em uma collection.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Veja
addOrUpdateObject:
Declaração
Objective-C
- (void)addOrUpdateObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func addOrUpdateObjects(_ objects: any NSFastEnumeration)
Parâmetros
objects
Uma collection enumerável , como
NSArray
,RLMArray
ouRLMResults
, contendo Objeto de Realm a serem adicionados ou atualizados dentro do Realm. -
Exclui um objeto do Realm. Depois que o objeto é excluído, ele é considerado invalidado.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Objective-C
- (void)deleteObject:(nonnull RLMObject *)object;
Swift
func delete(_ object: RLMObject)
Parâmetros
object
O objeto a ser excluído.
-
Exclui um ou mais objetos do Realm.
Isso é equivalente a chamar
deleteObject:
para cada objeto em uma collection.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Veja
deleteObject:
Declaração
Objective-C
- (void)deleteObjects:(nonnull id<NSFastEnumeration>)objects;
Swift
func deleteObjects(_ objects: any NSFastEnumeration)
Parâmetros
objects
Uma collection enumerável como
NSArray
,RLMArray
ouRLMResults
, contendo objeto a serem excluídos do Realm. -
Exclui todos os objetos do Realm.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Veja
deleteObject:
Declaração
Objective-C
- (void)deleteAllObjects;
Swift
func deleteAllObjects()
-
Representa as assinaturas ativas para este Realm, que podem ser usadas para adicionar/remover/atualizar e pesquisar assinaturas de Flexible Sync. Obter as assinaturas de um Realm configurado local ou baseado em partição lançará uma exceção.
Declaração
Objective-C
@property (nonatomic, readonly, nonnull) RLMSyncSubscriptionSet *subscriptions;
Swift
var subscriptions: RLMSyncSubscriptionSet { get }
-
Retorna a versão do esquema de um Realm em uma determinada URL local.
Declaração
Objective-C
+ (uint64_t)schemaVersionAtURL:(nonnull NSURL *)fileURL encryptionKey:(nullable NSData *)key error:(NSError *_Nullable *_Nullable)error;
Parâmetros
fileURL
URL local para um Arquivo de Realm.
key
Chave de 64 bytes usada para criptografar o arquivo ou
nil
se ele não estiver criptografado.error
Se ocorrer um erro, ao retornar conterá um objeto
NSError
que descreve o problema. Se você não estiver interessado em possíveis erros, passe emNULL
.Valor de retorno
A versão do Realm em
fileURL
ouRLMNotVersioned
se a versão não puder ser lida. -
Executa o bloco de migração da configuração do Realm fornecido em um Realm no caminho fornecido.
Este método é chamado automaticamente ao abrir um Realm pela primeira vez e não precisa ser chamado explicitamente. Você pode optar por chamar esse método para controlar exatamente quando e como as migrações são realizadas.
Veja
RLMMigration
Declaração
Objective-C
+ (BOOL)performMigrationForConfiguration: (nonnull RLMRealmConfiguration *)configuration error:(NSError *_Nullable *_Nullable)error;
Swift
class func performMigration(for configuration: RLMRealmConfiguration) throws
Parâmetros
configuration
A configuração do Realm costumava abrir e migrar o Realm.
Valor de retorno
O erro que ocorreu ao aplicar a migração, se houver.
-
Indisponível
Use +defaultRealm, +realmWithConfiguration: ou +realmWithURL:.
As instâncias do RLMRealm são armazenadas em cache internamente pelo Realm e não podem ser criadas diretamente.
Use
+[RLMRealm defaultRealm]
,+[RLMRealm realmWithConfiguration:error:]
ou+[RLMRealm realmWithURL]
para obter uma referência a um RLMRealm.Declaração
Objective-C
- (nonnull instancetype)init;
-
Indisponível
Use +defaultRealm, +realmWithConfiguration: ou +realmWithURL:.
As instâncias do RLMRealm são armazenadas em cache internamente pelo Realm e não podem ser criadas diretamente.
Use
+[RLMRealm defaultRealm]
,+[RLMRealm realmWithConfiguration:error:]
ou+[RLMRealm realmWithURL]
para obter uma referência a um RLMRealm.Declaração
Objective-C
+ (nonnull instancetype)new;
-
Obtenha o RLMSyncSession usado por este Realm. Não terá valor se este não for um Realm sincronizado.
Declaração
Objective-C
@property (nonatomic, readonly, nullable) RLMSyncSession *syncSession;
Swift
var syncSession: RLMSyncSession? { get }