API do Paginator - iOS

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 3 min. de leitura
  • A classe Paginator fornece métodos para iterar por meio de um conjunto de registros retornado por uma chamada para a API ServiceNow de tabela por meio do NowTableService. É o objeto retornado pelos métodos NowTableService paginator(). Não chame este método fora desse ambiente.

    Tabela 1. Propriedades
    Nome Tipo Descrição
    hasNext Booliano Sinalizador que indica se há uma próxima página a ser buscada.
    Valores válidos:
    • verdadeiro: a próxima página está disponível.
    • falso: a próxima página não está disponível.
    temAnterior Booliano Sinalizador que indica se há uma página anterior a ser buscada.
    Valores válidos:
    • verdadeiro: a página anterior está disponível.
    • falso: a página anterior não está disponível.
    estáOcupado Booliano Sinalizador que indica se o objeto Paginator está ocupado buscando dados.
    Valores válidos:
    • verdadeiro: o fornecedor está ocupado.
    • falso: o fornecedor não está ocupado.
    estáConcluído Booliano Sinalizador que indica se o objeto Paginator foi concluído. Quando o paginador está configurado para ser concluído, o fornecedor do objeto Paginator é concluído quando a última página é obtida. Um objeto Paginator não pode buscar páginas após a conclusão. Para obter informações adicionais, consulte a descrição do parâmetro publisherShouldFinish.
    Valores válidos:
    • verdadeiro: o fornecedor foi concluído.
    • falso: o fornecedor não foi concluído.
    itensPorPágina Números inteiros Número de itens a serem buscados por página.

    Padrão: 20

    númeroDePáginas Números inteiros Número total de páginas no conjunto de registros.

    Quando o objeto Paginator ainda não tiver obtido nenhuma página, este parâmetro será definido como Int.max. Depois que uma solicitação inicial é feita para a instância ServiceNow, o número de páginas é atualizado para o número real de páginas recebidas da instância ServiceNow.

    página Números inteiros Página atual no conjunto de registros paginados.
    fornecedor Cadeia de caracteres Fornecedor que fornece o fluxo de dados paginados aos assinantes.
    Nota:
    Por padrão, o fornecedor não termina. Para mudar esse comportamento, defina a propriedade publisherShouldFinish como verdadeira.
    publicadorDeveTermina Booliano Sinalizador que indica se o publicador do objeto Paginator deve ser interrompido quando a última página for obtida. Um objeto Paginator não pode buscar páginas após a conclusão.
    Valores válidos:
    • verdadeiro: depois que a última página é buscada, o fornecedor está liberado para fornecer dados adicionais. O método redefinir () não é mais funcional.
    • falso: o fornecedor nunca é concluído e todos os métodos estão totalmente operacionais, independentemente da navegação.

    Padrão: falso

    Paginador - lançamentos first()

    Busca a primeira página dos resultados de retorno.

    Se este método não puder buscar a primeira página, ele emitirá um PaginationError.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 3. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    class PaginatorTestViewModel<T: JSONRepresentable>: ObservableObject {
      @Published var result: Result<String, Error>?
      private let paginator: Paginator<T>
      private var subscriptions = Set<AnyCancellable>()
    
      init(paginator: Paginator<T>) {
        self.paginator = paginator
        subscribeToPaginator()
      }
    
      private func subscribeToPaginator() {
        paginator.publisher
          .receive(on: DispatchQueue.main)
          .sink { [weak self] comp in
            if case .failure(let error) = comp {
              self?.result = .failure(error)
            }
          } receiveValue: { [weak self] jsonRepresentable in
            self?.result = .success(jsonRepresentable.jsonDescription)
          }
          .store(in: &subscriptions)
      }
    
      func first() {
        result = nil
        do {
          try paginator.first()
        } catch {
          self.result = .failure(error)
        }
      }
    }

    Paginador - lançamentos de last()

    Busca a última página dos resultados retornados.

    Se este método não puder buscar a última página, ele emitirá um PaginationError.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 5. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    …
    func last() {
      result = nil
      do {
        try paginator.last()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginador - lançamentos de next()

    Busca a próxima página dos resultados de retorno.

    Se não houver mais páginas para buscar, o método emitirá um PaginationError.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 7. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    …
    func next() {
      result = nil
      do {
        try paginator.next()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginador - lançamentos anteriores ()

    Busca a página anterior dos resultados retornados.

    Se o método não puder buscar a página anterior, ele emitirá um PaginationError.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 9. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    …
    func previous() {
      result = nil
      do {
        try paginator.previous()
      } catch {
        self.result = .failure(error)
      }
    }
    …

    Paginador - redefinir()

    Redefine o Paginador de volta para a primeira página, mas não retorna a primeira página dos resultados de retorno.

    Tabela 10. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 11. Retorna
    Tipo Descrição
    Nenhum(a)

    O exemplo de código a seguir mostra como chamar este método.

    …
    func reset() {
      result = nil
      paginator.reset()
    }
    …