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âncias RLMRealm 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.

Criando e inicializando um Realm

  • 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âmetro RLMRealm , 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 em NULL.

    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 em NULL.

    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.

  • O RLMSchema usado pelo Realm.

    Declaração

    Objective-C

    @property (nonatomic, readonly) RLMSchema *_Nonnull schema;

    Swift

    var schema: RLMSchema { get }
  • 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ância RLMRealm .

    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.

    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

Gerenciamento de arquivos

  • 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 em NULL.

    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 em NULL.

    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.

Recebendo notificação quando um Realm é alterado

  • 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. Consulte RLMRealmNotification 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.

Escrevendo para um domínio

  • 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âncias RLMRealm 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 do RLMRealm para a Versão do Realm, como se o refresh 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, consulte commitWriteTransactionWithoutNotifying: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, consulte commitWriteTransactionWithoutNotifying: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 em NULL.

    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 em NULL.

    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 RLMObjects 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 quanto newObject retornarão YES para isInvalidated, mas a reexecução da query que forneceu oldObject 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âncias RLMRealm 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 do RLMRealm para a Versão do Realm, como se o refresh 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 em NULL.

    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 ou asyncTransactionWithBlock:, e permanece assim até que todo o trabalho de gravação assíncrona agendado seja concluído.

    Aviso

    Se isso for YES, 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 chamando commitAsyncWriteTransaction, commitWriteTransaction ou cancelWriteTransaction. Retornar sem uma dessas chamadas é equivalente a chamar cancelWriteTransaction.

    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 ou beginAsyncWriteTransaction.

    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 para commitAsyncWriteTransaction: 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 ou beginAsyncWriteTransaction.

    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 ou beginAsyncWriteTransaction.

    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: ou commitAsyncWriteTransaction:.

  • 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 explicitamente commitWriteTransaction ou cancelWriteTransaction 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 explicitamente commitWriteTransaction ou cancelWriteTransaction 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 como NO, 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 que autorefresh esteja definido como YES.

    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, e autorefresh será revertido para YES na próxima vez que o Realm for criado. Normalmente, isso é irrelevante, pois significa que não há nada para atualizar (já que RLMObject s, RLMArray s gerenciados e RLMResults têm referências fortes para o Realm que os gerencia), mas significa que a configuração RLMRealm.defaultRealm.autorefresh = NO em application: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 RLMObjects, RLMResults, RLMLinkingObjects e RLMArrays 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 e RLMArray obtidas desta instância RLMRealm na thread atual são invalidadas. RLMObjects e RLMArrays 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()

Acessando objetos

  • Retorna o mesmo objeto que o referenciado quando o RLMThreadSafeReference foi criado pela primeira vez, mas resolvido para o Realm atual para este thread. Retorna nil 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 um RLMThreadSafeReference 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.

Adicionar e remover objetos de um Realm

  • Adiciona um objeto ao Realm.

    Depois de adicionado, esse objeto é considerado managed pelo Realm. Pode ser recuperado usando os seletores objectsWhere: em RLMRealm e em subclasses de RLMObject.

    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 ser NO).

    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 ou RLMResults, 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 ou RLMResults, 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 ou RLMResults, 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()

Sincronizar assinaturas

  • 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 }

Migrações

  • 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 em NULL.

    Valor de retorno

    A versão do Realm em fileURL ou RLMNotVersioned 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.

Métodos indisponíveis

sincronizar