API du paginateur : iOS

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 3 minutes de lecture
  • La classe Paginator fournit des méthodes d’itération dans un jeu d’enregistrements renvoyé par un appel à l’API ServiceNow Table via NowTableService. Il s’agit de l’objet renvoyé par les méthodes paginator() NowTableService. N’appelez pas cette méthode en dehors de cet environnement.

    Tableau 1. Propriétés
    Nom Type Description
    hasNext Booléen Marqueur indiquant s’il existe une page suivante à extraire.
    Valeurs valides :
    • true : la page suivante est disponible.
    • faux : la page suivante n’est pas disponible.
    hasPrevious Booléen Marqueur indiquant s’il existe une page précédente à extraire.
    Valeurs valides :
    • true : la page précédente est disponible.
    • false : la page précédente n’est pas disponible.
    isBusy Booléen Marqueur indiquant si l’objet Paginateur est occupé à extraire des données.
    Valeurs valides :
    • vrai : l’éditeur est occupé.
    • faux : l’éditeur n’est pas occupé.
    isFinished Booléen Marqueur indiquant si l’objet Paginateur est terminé. Lorsque le paginateur est configuré pour se terminer, l’éditeur de l’objet Paginator se termine lorsque la dernière page a été extraite. Un objet Paginator ne peut pas extraire de pages une fois qu’il est terminé. Pour plus d’informations, consultez la description du publisherShouldFinish paramètre.
    Valeurs valides :
    • vrai : l’éditeur a terminé.
    • false : l’éditeur n’a pas terminé.
    itemsPerPage Entier Nombre d’éléments à extraire par page.

    Par défaut : 20

    nombre de pages Entier Nombre total de pages dans l’ensemble d’enregistrements.

    Lorsque l’objet Paginator n’a pas encore récupéré de pages, ce paramètre est défini sur Int.max. Une fois qu’une demande initiale a été effectuée auprès de l’instance ServiceNow , le nombre de pages est mis à jour en fonction du nombre réel de pages reçues de l’instance ServiceNow .

    Page Entier Page actuelle dans l’ensemble d’enregistrements paginés.
    éditeur Chaîne Éditeur qui fournit le flux de données paginées aux abonnés.
    Remarque :
    Par défaut, l’éditeur ne termine pas. Pour modifier ce comportement, définissez la publisherShouldFinish propriété sur vrai.
    éditeurShouldFinish Booléen Marqueur indiquant s’il faut arrêter l’éditeur de l’objet Paginator lorsque la dernière page a été extraite. Un objet Paginator ne peut pas extraire de pages une fois qu’il est terminé.
    Valeurs valides :
    • true : une fois la dernière page extraite, l’éditeur est libéré de la fourniture de données supplémentaires. La méthode reset() n’est plus fonctionnelle.
    • false : L’éditeur n’est jamais terminé et toutes les méthodes sont pleinement opérationnelles, quelle que soit la navigation.

    Valeur par défaut : false

    Paginateur : premières levées ()

    Récupère la première page des résultats de retour.

    Si cette méthode ne peut pas extraire la première page, elle lève une PaginationError.

    Tableau 2. Paramètres
    Nom Type Description
    Aucun
    Tableau 3. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

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

    Paginateur : levées de last()

    Récupère la dernière page des résultats de retour.

    Si cette méthode ne peut pas extraire la dernière page, elle lève une PaginationError.

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

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

    Paginateur : next() lève

    Récupère la page suivante des résultats de retour.

    S’il n’y a plus de pages à extraire, la méthode lève une PaginationError.

    Tableau 6. Paramètres
    Nom Type Description
    Aucun
    Tableau 7. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

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

    Paginateur : levées previous()

    Récupère la page précédente des résultats de retour.

    Si la méthode ne peut pas récupérer la page précédente, elle lève une PaginationError.

    Tableau 8. Paramètres
    Nom Type Description
    Aucun
    Tableau 9. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

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

    Paginateur : reset()

    Réinitialise le paginateur à la première page, mais ne renvoie pas la première page des résultats renvoyés.

    Tableau 10. Paramètres
    Nom Type Description
    Aucun
    Tableau 11. Renvoie
    Type Description
    Aucun

    L’exemple de code suivant montre comment appeler cette méthode.

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