Resultados

@frozen
public struct Results<Element> : Equatable, RealmCollectionImpl where Element : RealmCollectionValue
extension Results: RealmSubscribable
extension Results: Encodable where Element: Encodable

Results é um tipo de container de atualização automática no Realm retornado de query de objeto.

Results pode ser consultada com os mesmos predicados de List<Element>, e você pode encadear queries para filtrar ainda mais os resultados da query.

Results sempre refletem o estado atual do Realm na thread atual, inclusive durante transação de escrita na thread atual. A única exceção a isso é ao usar a enumeração for...in , que sempre enumerará os objetos que corresponderam à query quando a enumeração for iniciada, mesmo que alguns deles sejam excluídos ou modificados para serem excluídos pelo filtro durante a enumeração.

Results são avaliados preguiçosamente na primeira vez que são acessados; eles só executam query quando o resultado da query é solicitado. Isso significa que o encadeamento de vários Results temporários para classificar e filtrar seus dados não executa nenhum trabalho desnecessário processando o estado intermediário.

Depois que os resultados são avaliados ou um bloco de notificação é adicionado, os resultados são mantidos atualizados, com o trabalho feito para mantê-los atualizados em um thread em segundo plano, sempre que possível.

As instâncias de resultados não podem ser diretamente instanciadas.

  • Uma descrição legível por humanos dos objetos representados pelos resultados.

    Declaração

    Swift

    public var description: String { get }

Recuperação de objetos

  • Retorna o objeto no index fornecido.

    Declaração

    Swift

    public subscript(position: Int) -> Element { get }

    Parâmetros

    index

    O índice.

Equalizável

Flexible Sync

  • Cria uma SyncSubscription que corresponde à query local dos resultados. Após confirmar a assinatura no conjunto de assinaturas local do domínio, o método aguardará as transferências de acordo com WaitForSyncMode.

    Assinaturas sem nome

    Se .subscribe() for chamado sem um nome cuja query corresponda a uma assinatura sem nome, outra assinatura não será criada.

    Se .subscribe() for chamado sem um nome cuja query corresponda a uma assinatura nomeada, uma assinatura adicional sem nome será criada.

    Assinaturas nomeadas

    Se .subscribe() for chamado com um nome cuja query corresponda a uma assinatura sem nome, uma assinatura nomeada adicional será criada.

    Nome existente e query

    Se .subscribe() for chamado com um nome cujo nome é obtido em uma query diferente, a assinatura antiga será atualizada com a nova query.

    Se .subscribe() for chamado com um nome que já esteja em uso por uma query idêntica, nenhuma nova assinatura será criada.

    Observação

    Esse método aguardará que todos os dados sejam baixados antes de retornar quando WaitForSyncMode.always e .onCreation (quando a assinatura for criada pela primeira vez) forem usados. Isso requer uma conexão com a internet se nenhum tempo limite for definido.

    Observação

    Este método abre uma transação de atualização que cria ou atualiza uma assinatura. É aconselhável não repetir este método para criar várias assinaturas. Isso pode criar um gargalo de desempenho ao abrir várias transação de atualização desnecessárias. Para criar várias assinaturas de uma só vez, use SyncSubscription.update.

    Aviso

    Essa função só é compatível com thread principal e Realms isolados por atores.

    Declaração

    Swift

    @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
    public func subscribe(
        name: String? = nil,
        waitForSync: WaitForSyncMode = .onCreation,
        timeout: TimeInterval? = nil,
        _isolation: isolated any Actor = #isolation
    ) async throws -> Results<Element>

    Parâmetros

    name

    O nome aplicado à assinatura

    waitForSync

    WaitForSyncMode Determina o comportamento de download para a assinatura. Padrão é .onCreation.

    timeout

    Um tempo limite opcional do cliente. O cliente cancelará a espera pelos downloads da assinatura após esse tempo. Atingir esse tempo limite não implica um erro no servidor.

    Valor de retorno

    Retorna self.

  • Remove uma SyncSubscription que corresponde ao filtro local dos resultados.

    O método retorna após confirmar a remoção de assinatura no conjunto de assinatura local do domínio. Chamar esse método não esperará que o objeto seja removido do Realm.

    Para que uma assinatura nomeada seja removida, os Resultados devem ter criado a assinatura anteriormente. Por exemplo:

    let results1 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe(name: "adults")
    let results2 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe(name: "overOne")
    let results3 = try await realm.objects(Dog.self).where { $0.age > 1 }.subscribe()
    // This will unsubscribe from the subscription named "overOne". The "adults" and unnamed
    // subscription still remain.
    results2.unsubscribe()
    

    Observação

    Este método abre uma transação de atualização que remove uma assinatura. É aconselhável não usar esse método para fazer várias alterações de assinatura em lote no servidor. Para cancelar a assinatura de várias assinaturas de uma só vez, use SyncSubscription.update.

    Aviso

    Chamar de cancelamento de assinatura em um resultado não remove o filtro local do Results. Depois de chamar o cancelamento de assinatura, os resultados ainda podem conter objetos porque outras assinaturas podem existir no conjunto de assinaturas do domínio.

    Aviso

    Esta API está atualmente em Preview e pode estar sujeita a alterações futuras.

    Declaração

    Swift

    public func unsubscribe()

Resultados

  • Uma editora que emite um vazio toda vez que a collection muda.

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

    Declaração

    Swift

    public var objectWillChange: RealmPublishers.WillChange<Results> { get }