RealmCollectionChange

@frozen
public enum RealmCollectionChange<CollectionType>

Um valor RealmCollectionChange encapsula informações sobre alterações na collection que são relatadas pelas notificações do Realm.

As informações de alteração estão disponíveis em dois formatos: uma array simples de índices de linha na collection para cada tipo de alteração e uma array de caminhos de índice em uma seção solicitada adequada para passar diretamente para os métodos de atualização em lote do UITableView .

As arrays de índices no caso .update seguem as convenções em lote do UITableViewe podem ser passadas como estão para as funções de atualização em lote de uma visualização de tabela após serem convertidas em caminhos de índice. Por exemplo, para uma visualização de tabela de seção simples, você pode fazer o seguinte:

self.notificationToken = results.observe { changes in
    switch changes {
    case .initial:
        // Results are now populated and can be accessed without blocking the UI
        self.tableView.reloadData()
        break
    case .update(_, let deletions, let insertions, let modifications):
        // Query results have changed, so apply them to the TableView
        self.tableView.beginUpdates()
        self.tableView.insertRows(at: insertions.map { IndexPath(row: $0, section: 0) },
           with: .automatic)
        self.tableView.deleteRows(at: deletions.map { IndexPath(row: $0, section: 0) },
           with: .automatic)
        self.tableView.reloadRows(at: modifications.map { IndexPath(row: $0, section: 0) },
           with: .automatic)
        self.tableView.endUpdates()
        break
    case .error(let err):
        // An error occurred while opening the Realm file on the background worker thread
        fatalError("\(err)")
        break
    }
}
  • .initial indica que a execução inicial da query foi concluída (se aplicável) e a collection agora pode ser usada sem realizar nenhum trabalho de bloqueio.

    Declaração

    Swift

    case initial(CollectionType)
  • .update indica que uma transação de escrita foi confirmada, o que alterou quais objeto estão na collection e/ou modificou um ou mais objeto na collection.

    Todas as três arrays de alteração são sempre classificadas em ordem crescente.

    Declaração

    Swift

    case update(CollectionType, deletions: [Int], insertions: [Int], modifications: [Int])

    Parâmetros

    deletions

    Os índices da versão anterior da collection que foram removidos desta.

    insertions

    Os índices da nova collection adicionados nesta versão.

    modifications

    Os índices do objeto que foram modificados na versão anterior desta collection.

  • Os erros não podem mais ocorrer. Este caso não é usado e será removido na próxima versão principal.

    Declaração

    Swift

    case error(Error)