Realm

@frozen
public struct Realm
extension Realm: Equatable

Uma instância Realm (também conhecida como "um Realm") representa um reconhecimento de data center Realm.

Os domínios podem ser armazenados no disco (consulte init(path:)) ou na memória (consulte Configuration).

Realm as instâncias são armazenadas em cache internamente e a construção de objetos Realm equivalentes (por exemplo, usando o mesmo caminho ou identificador) produz uma sobrecarga limitada.

Se você quiser especificamente garantir que uma instância Realm seja destruída (por exemplo, se você deseja abrir um Realm, verificar algumas propriedades e, em seguida, possivelmente excluir o arquivo 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

aviso As instâncias RLMRealm não congeladas são confinadas por thread 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 obter uma instância de RLMRealm em cada thread ou fila em que deseja interagir com o Realm . Os realms podem ser confinados a uma fila de despacho em vez do thread em que são abertos, passando explicitamente na fila ao obter a instância RLMRealm . Se isso não for feito, a tentativa de usar a mesma instância no despacho de vários blocos para a mesma fila pode falhar, pois as filas nem sempre são executadas no mesmo thread.

Propriedades

Inicializadores

  • Obtém uma instância do Realm padrão.

    O Realm padrão é mantido como default.realm no diretório documento da sua aplicação no iOS e no diretório de suporte da aplicação do seu aplicativo no OS X.

    O Realm padrão é criado usando o Configuration padrão, que pode ser alterado definindo a propriedade Realm.Configuration.defaultConfiguration para um novo valor.

    Lança

    Um NSError se o Realm não puder ser inicializado.

    Declaração

    Swift

    public init(queue: DispatchQueue? = nil) throws

    Parâmetros

    queue

    Uma fila de despacho opcional à qual confinar o Realm. Se fornecida, essa Instância de Realm pode ser usada de dentro dos blocos despachados para a fila fornecida em vez de na thread atual.

  • Obtém uma instância Realm com a configuração fornecida.

    Lança

    Um NSError se o Realm não puder ser inicializado.

    Declaração

    Swift

    public init(configuration: Configuration, queue: DispatchQueue? = nil) throws

    Parâmetros

    configuration

    Um valor de configuração para utilizar ao criar o Realm.

    queue

    Uma fila de despacho opcional à qual confinar o Realm. Se fornecida, essa Instância de Realm pode ser usada de dentro dos blocos despachados para a fila fornecida em vez de na thread atual.

  • Obtém uma instância do Realm persistente em um URL de arquivo especificado.

    Lança

    Um NSError se o Realm não puder ser inicializado.

    Declaração

    Swift

    public init(fileURL: URL) throws

    Parâmetros

    fileURL

    A URL local do arquivo em que o Realm deve ser salvo.

Async

  • 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 Realm(configuration:queue:) fosse usado.

    Declaração

    Swift

    @discardableResult
    public static func asyncOpen(configuration: Realm.Configuration = .defaultConfiguration,
                                 callbackQueue: DispatchQueue = .main,
                                 callback: @escaping (Result<Realm, Swift.Error>) -> Void) -> AsyncOpenTask

    Parâmetros

    configuration

    Um objeto de configuração para usar ao abrir o Realm.

    callbackQueue

    A fila de despacho 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 Swift.Error descrevendo o que deu errado será passado para o bloco.

    Valor de retorno

    Um objeto de tarefa que pode ser usado para observar ou cancelar a abertura assíncrona.

  • 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 o editor está confinado à fila de chamada de resposta como se Realm(configuration:queue:) fosse usado.

    Declaração

    Swift

    @available(macOS 10.15, watchOS 6.0, iOS 13.0, iOSApplicationExtension 13.0, macOSApplicationExtension 10.15, tvOS 13.0, *)
    public static func asyncOpen(configuration: Realm.Configuration = .defaultConfiguration) -> RealmPublishers.AsyncOpenPublisher

    Parâmetros

    configuration

    Um objeto de configuração para usar ao abrir o Realm.

    callbackQueue

    A fila de despacho na qual o AsyncOpenTask deve ser executado.

    Valor de retorno

    Um editor. Se o Realm foi aberto com sucesso, ele será recebido pelos assinantes. Caso contrário, um Swift.Error descrevendo o que deu errado será passado upstream.

  • Um objeto de tarefa que pode ser usado para observar ou cancelar uma abertura assíncrona.

    Quando um Realm sincronizado é aberto de forma assíncrona, o estado mais recente do Realm é baixado do servidor antes que o retorno de chamada de conclusão seja invocado. Este objeto de tarefa pode ser usado para observar o estado do download ou cancelá-lo. Isso deve ser usado em vez de tentar observar o download por meio da sessão de sincronização, pois a própria sessão de sincronização é criada de forma assíncrona e pode ainda não existir quando Realm.asyncOpen() retornar.

    Veja mais

    Declaração

    Swift

    @frozen
    public struct AsyncOpenTask

Transações

  • Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.

    Se o bloqueio gerar um erro, a transação será cancelada e todas as alterações feitas antes do erro serão revertidas.

    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 write de instâncias Realm 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 write atualiza a instância do Realm 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 essa função devem ser para notificações desse Realm que foram adicionados na mesma thread em que a transação de escrita está sendo executada. As notificações de threads diferentes não podem ser ignoradas usando esse método.

    Lança

    Um NSError se a transação não puder ser concluída com sucesso. Se block lançar, a função lançará o ErrorType propagado.

    Declaração

    Swift

    @discardableResult
    public func write<Result>(withoutNotifying tokens: [NotificationToken] = [], _ block: (() throws -> Result)) throws -> Result

    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.

    Valor de retorno

    O valor retornado do bloco, se houver.

  • 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 beginWrite de instâncias Realm 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 beginWrite atualiza a instância do Realm 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

    Swift

    public func beginWrite()
  • 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 e concluir a transação de escrita, todos os blocos de notificação registrados nessa instância Realm específica são chamados de forma síncrona. Os blocos de notificação para instâncias Realm em outras threads e blocos registrados para qualquer collection de Realm (incluindo aqueles na thread atual) estão programados para serem chamados de forma sí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 essa função devem ser para notificações desse Realm que foram adicionados na mesma thread em que a transação de escrita está sendo executada. As notificações de threads diferentes não podem ser ignoradas usando esse método.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Lança

    Um NSError se a transação não puder ser gravada devido à falta de espaço em disco ou a outros erros de E/S.

    Declaração

    Swift

    public func commitWrite(withoutNotifying tokens: [NotificationToken] = []) 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.

  • Reverte todas as gravações feitas na 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 Objects que foram adicionados ao Realm serão invalidados em vez de se tornarem não gerenciados.

    Dado o seguinte código:

    let oldObject = objects(ObjectType).first!
    let newObject = ObjectType()
    
    realm.beginWrite()
    realm.add(newObject)
    realm.delete(oldObject)
    realm.cancelWrite()
    

    Tanto oldObject quanto newObject retornarão true para isInvalidated, mas a reexecução da query que forneceu oldObject retornará novamente o objeto válido.

    Os observadores da KVO em qualquer objeto 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

    Swift

    public func cancelWrite()
  • Indica se o Realm está atualmente 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

    Swift

    public var isInWriteTransaction: Bool { get }

Adicionando e criando objetos

  • O que fazer quando um objeto adicionado ou criado em um Realm tiver uma chave primária que já existe.

    Veja mais

    Declaração

    Swift

    @frozen
    public enum UpdatePolicy : Int
  • Adiciona um objeto não gerenciado a este Realm.

    Se um objeto com a mesma chave primária já existir neste Realm, ele será atualizado com os valores de propriedade deste objeto conforme especificado pelo UpdatePolicy selecionado. A política de atualização deve ser .error para objetos sem chave primária.

    Adicionar um objeto a um Realm também adicionará todos os relacionamentos filhos referenciados por esse objeto (por meio das propriedades Object e List<Object> ). Esses objetos também devem ser objetos válidos para adicionar a esse Realm, e o valor do parâmetro update: é propagado para esses adicionais.

    O objeto a ser adicionado deve ser um objeto não managed ou um objeto válido que já seja managed por este Realm. Adicionar um objeto já gerenciado por este Realm é um no-op, enquanto adicionar um objeto que é gerenciado por outro Realm ou que foi excluído de qualquer Realm (ou seja, um onde isInvalidated é true) é um erro.

    Para copiar um managed objeto de um Realm para outro, use create() em vez disso.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Swift

    public func add(_ object: Object, update: UpdatePolicy = .error)

    Parâmetros

    object

    O objeto a ser adicionado a este Realm.

    update

    O que fazer se já existir um objeto com a mesma chave primária . Deve ser .error para objetos sem uma chave primária.

  • Adiciona todos os objeto de uma collection ao Realm.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Swift

    public func add<S>(_ objects: S, update: UpdatePolicy = .error) where S : Sequence, S.Element : Object

    Parâmetros

    objects

    Uma sequência que contém objetos a serem adicionados ao Realm.

    update

    Como lidar com objetos na coleção com uma chave primária que já existe neste Realm. Deve ser .error para tipos de objeto sem chave primária.

    update

    Como lidar com objetos na coleção com uma chave primária que já existe neste Realm. Deve ser .error para tipos de objeto sem chave primária.

  • Cria um Objeto de Realm com um determinado valor, adicionando-o ao Realm e retornando-o.

    O argumento value pode ser um Objeto de Realm, um objeto compatível com codificação de valor-chave, uma array ou dicionário retornado dos métodos em NSJSONSerialization ou um Array contendo um elemento para cada propriedade managed. Não passe em uma instância LinkingObjects, por si só ou como membro de uma collection. Se o argumento value for uma array, todas as propriedades deverão estar presentes, válidas e na mesma ordem que as propriedades definidas no modelo.

    Se o tipo de objeto não tiver uma chave primária ou não existir nenhum objeto com a chave primária especificada, um novo objeto será criado no Realm. Se um objeto já existir no Realm com a chave primária especificada e a política de atualização for .modified ou .all, o objeto existente será atualizado e uma referência a esse objeto será retornada.

    Se o objeto estiver sendo atualizado, todas as propriedades definidas em seu esquema serão definidas copiando do value usando codificação de valor-chave. Se o argumento value não responder a value(forKey:) para um determinado nome de propriedade (ou nome de getter, se definido), esse valor permanecerá intocado. As propriedades anuláveis no objeto podem ser definidas como nulo usando NSNull como o valor atualizado ou (se você estiver passando em uma instância de uma subclasse Object ) definindo a propriedade correspondente em value como nulo.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Swift

    @discardableResult
    public func create<T>(_ type: T.Type, value: Any = [:], update: UpdatePolicy = .error) -> T where T : Object

    Parâmetros

    type

    O tipo do objeto a ser criado.

    value

    O valor utilizado para preencher o objeto.

    update

    O que fazer se já existir um objeto com a mesma chave primária . Deve ser .error para tipos de objeto sem chave primária.

    Valor de retorno

    O objeto recém-criado.

Excluindo objetos

  • 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

    Swift

    public func delete(_ object: ObjectBase)

    Parâmetros

    object

    O objeto a ser excluído.

  • Exclui zero ou mais objetos do Realm.

    Não passe uma fatia para um Results ou para qualquer outro tipo de collection de Realm de atualização automática (por exemplo, o tipo retornado pelo método da biblioteca padrão Swift suffix(_:) ). Em vez disso, faça uma cópia dos objetos a serem excluídos usando Array() e passe isso. Passar diretamente uma visualização para uma collection de atualização automática pode resultar na geração de exceções de "índice fora dos limites".

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Swift

    public func delete<S>(_ objects: S) where S : Sequence, S.Element : ObjectBase

    Parâmetros

    objects

    Os objetos a serem excluídos. Pode ser um List<Object>, Results<Object> ou qualquer outro Swift Sequence cujos elementos sejam Objects (sujeito às ressalvas acima).

  • Exclui todos os objetos do Realm.

    Aviso

    Este método só pode ser chamado durante uma transação de escrita.

    Declaração

    Swift

    public func deleteAll()

Recuperação de objetos

  • Retorna todos os objetos do tipo fornecido armazenados no Realm.

    Declaração

    Swift

    public func objects<Element>(_ type: Element.Type) -> Results<Element> where Element : Object

    Parâmetros

    type

    O tipo dos objetos a serem retornados.

    Valor de retorno

    Um Results contendo os objetos.

  • Recupera a instância única de um determinado Tipo de objeto de Realm com a chave primária fornecida do Realm.

    Este método requer que primaryKey() seja substituído na classe de objeto fornecida.

    Veja

    Object.primaryKey()

    Declaração

    Swift

    public func object<Element, KeyType>(ofType type: Element.Type, forPrimaryKey key: KeyType) -> Element? where Element : Object

    Parâmetros

    type

    O tipo do objeto a ser retornado.

    key

    A chave primária do objeto desejado.

    Valor de retorno

    Um objeto do tipo type ou nil se não existir nenhuma instância com a chave primária fornecida.

Notificações

  • Adiciona um manipulador de notificações para alterações feitas 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, independentemente do thread ou processo.

    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.

    As notificações não podem ser entregues enquanto o loop de eventos estiver bloqueado por outra atividade. Quando as notificações não podem ser entregues instantaneamente, várias notificações podem ser agrupadas.

    Você deve reter o token retornado pelo tempo que desejar que as atualizações sejam enviadas ao bloco. Para parar de receber atualizações, ligue para invalidate() no token.

    Declaração

    Swift

    public func observe(_ block: @escaping NotificationBlock) -> NotificationToken

    Parâmetros

    block

    Um bloco chamado para processar as notificações do Realm. Ela recebe os seguintes parâmetros: notification: a notificação recebida; realm: o Realm para o qual ocorreu a notificação.

    Valor de retorno

    Um token que deve ser mantido enquanto você desejar continuar recebendo notificações de alteração.

Atualização automática e atualização

  • Defina esta propriedade como true para atualizar automaticamente este Realm quando as alterações acontecerem em outros segmentos.

    Se definido como true (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 false, 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 true.

    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 notificações são enviadas quando uma transação de escrita é confirmada se a atualização automática está habilitada ou não.

    Desativar autorefresh em um Realm sem referências fortes a ele não terá nenhum efeito, e autorefresh será revertido para true na próxima vez que o Realm for criado. Normalmente, isso é irrelevante, pois significa que não há nada para atualizar (já que Objects, Lists managed e Results têm referências fortes para o Realm que os managed), mas significa que a configuração autorefresh = false em application(_:didFinishLaunchingWithOptions:) e somente mais tarde o armazenamento de objeto de Realm não funcionará.

    Padrão é true.

    Declaração

    Swift

    public var autorefresh: Bool { get nonmutating set }
  • Atualiza o Realm e os objeto managed pelo Realm para ponto para os dados mais recentes.

    Declaração

    Swift

    @discardableResult
    public func refresh() -> Bool

    Valor de retorno

    Se houve atualizações para o Realm. Observe que true pode ser retornado mesmo que nenhum dado seja realmente alterado.

Realms congelados

  • Retorna se este Realm estiver congelado.

    Declaração

    Swift

    public 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ância de Realm, 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.

    Aviso

    Manter um Realm congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. Consulte Realm.Configuration.maximumNumberOfActiveVersions para obter mais informações.

    Declaração

    Swift

    public func freeze() -> Realm
  • Retorna uma referência ativa (mutável) deste Realm.

    Todos os objeto e collection lidos da referência do Realm retornada não serão mais congelados. Retornará a si mesmo se for chamado em um Realm que ainda não esteja congelado.

    Declaração

    Swift

    public func thaw() -> Realm
  • Retorna um snapshot congelado (imutável) do objeto fornecido.

    A cópia congelada é um objeto imutável que contém os mesmos dados que o objeto fornecido atualmente, mas não será atualizado quando forem feitas gravações no Realm que a contém. Ao contrário dos objetos ativos, os objetos congelados podem ser acessados de qualquer thread.

    Aviso

    Manter um objeto congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. Consulte Realm.Configuration.maximumNumberOfActiveVersions para obter mais informações.

    Declaração

    Swift

    public func freeze<T>(_ obj: T) -> T where T : ObjectBase
  • Retorna uma referência ativa (mutável) deste objeto.

    Esse método cria um acessador gerenciado para uma cópia ativa do mesmo objeto congelado. Retornará a si mesmo se for chamado em um objeto já ativo.

    Declaração

    Swift

    public func thaw<T>(_ obj: T) -> T? where T : ObjectBase
  • Retorna um snapshot congelado (imutável) da collection fornecida.

    A cópia congelada é uma collection imutável que contém os mesmos dados que a collection fornecida atualmente, mas não será atualizada quando forem feitas gravações no Realm que a contém. Ao contrário da collection ativa, a collection congelada pode ser acessada de qualquer thread.

    Aviso

    Este método não pode ser chamado durante uma transação de gravação ou quando o Realm for somente leitura.

    Aviso

    Manter uma collection congelada por um longo período enquanto executa transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. Consulte Realm.Configuration.maximumNumberOfActiveVersions para obter mais informações.

    Declaração

    Swift

    public func freeze<Collection>(_ collection: Collection) -> Collection where Collection : RealmCollection

Invalidação

  • Invalida todos os Objects, Results, LinkingObjects e Lists 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 Object, Results e List obtidas desta instância Realm na thread atual são invalidadas. Objects e Arrays não podem ser usados. Results 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

    Swift

    public func invalidate()

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.

    Lança

    Um NSError se a cópia não puder ser escrita.

    Declaração

    Swift

    public func writeCopy(toFile fileURL: URL, encryptionKey: Data? = nil) throws

    Parâmetros

    fileURL

    URL local na qual salvar o Realm.

    encryptionKey

    Chave de criptografia opcional de 64 bytes para criptografar o novo arquivo.

  • 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 FileManager.default.fileExists(atPath:). 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.

    @param config Uma configuração do Realm para verificar a existência. @return true se o Arquivo de Realm para a configuração fornecida existir no disco, false caso contrário.

    Declaração

    Swift

    public static func fileExists(for config: Configuration) -> Bool
  • 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 estiver, isso gerará o erro .alreadyOpen. A tentativa de abrir o Realm em outro thread enquanto a exclusão está ocorrendo bloqueará e, em seguida, criará um novo Realm e o abrirá posteriormente.

    Se o Realm ainda não existir, isso retornará false.

    @param config Uma configuração de Realm que identifica o Realm a ser excluído. @return true se algum arquivo foi excluído, false caso contrário.

    Declaração

    Swift

    public static func deleteFiles(for config: Configuration) throws -> Bool

Realm

  • Um editor que emite um cancelamento toda vez que o objeto muda.

    Apesar do nome, isso na verdade é emitido após a mudança da collection.

    Declaração

    Swift

    public var objectWillChange: RealmPublishers.RealmWillChange { get }
  • Estrutura que descreve os códigos de erro no domínio de erro do Realm. Os valores podem ser usados para detectar uma variedade de erros recuperáveis , especialmente aqueles que ocorrem ao inicializar uma instância do Realm.

    let realm: Realm?
    do {
        realm = try Realm()
    } catch Realm.Error.incompatibleLockFile {
        print("Realm Browser app may be attached to Realm on device?")
    }
    
    Veja mais

    Declaração

    Swift

    @frozen
    public struct Error
    extension Realm.Error: Equatable
  • 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.

    Declaração

    Swift

    public static func performMigration(for configuration: Realm.Configuration = Realm.Configuration.defaultConfiguration) throws

    Parâmetros

    configuration

    A configuração do Realm costumava abrir e migrar o Realm.

Equalizável

  • Retorna se duas instâncias Realm são iguais.

    Declaração

    Swift

    public static func == (lhs: Realm, rhs: Realm) -> Bool

Notificações

  • Uma notificação indicando que as alterações foram feitas em um Realm.

    Veja mais

    Declaração

    Swift

    @frozen
    public enum Notification : String
  • Uma instância Configuration descreve as diferentes opções usadas para criar uma instância de um Realm.

    Configuration instâncias são estruturas Swift simples. Ao contrário de Realms e Objects, eles podem ser compartilhados livremente entre threads, desde que você não os altere.

    Criar valores de configuração para subconjuntos de classe (definindo a propriedade objectClasses ) pode ser caro. Por esse motivo, normalmente você desejará armazenar em cache e reutilizar um único valor de configuração para cada configuração distinta, em vez de criar um novo valor sempre que abrir um Realm.

    Veja mais

    Declaração

    Swift

    @frozen
    public struct Configuration
    extension Realm.Configuration: CustomStringConvertible
    extension Realm.Configuration: Equatable
  • Obtenha a SyncSession usada por este Realm. Não terá valor se este não for um Realm sincronizado.

    Declaração

    Swift

    public var syncSession: SyncSession? { get }

Referência segura de threads

  • Retorna o mesmo objeto que o referenciado quando o ThreadSafeReference 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 ThreadSafeReference deve ser resolvido no máximo uma vez. A não resolução de um ThreadSafeReference 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.

    Veja

    ThreadSafeReference(to:)

    Declaração

    Swift

    public func resolve<Confined>(_ reference: ThreadSafeReference<Confined>) -> Confined? where Confined : ThreadConfined

    Parâmetros

    reference

    A referência segura de thread para o objeto confinado a thread para resolver neste Realm.