API du paginateur : iOS

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • La classe Paginator fournit des méthodes d’itération à travers un ensemble d’enregistrements renvoyé par un appel à l’API ServiceNow de table via NowTableService. C’est l’objet qui est 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.
    • false : la page suivante n’est pas disponible.
    hasPrevious Booléen Marqueur indiquant s’il existe une page précédente à extraire.
    Valeurs valides :
    • vrai : La page précédente est disponible.
    • faux : 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 :
    • true : l’éditeur est occupé.
    • faux : l’éditeur n’est pas occupé.
    isFinished (en anglais seulement) Booléen Marqueur indiquant si l’objet Paginator 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 extraire aucune page une fois qu’il est terminé. Pour plus d’informations, consultez la publisherShouldFinish description du paramètre.
    Valeurs valides :
    • true : 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 le jeu d’enregistrements.

    Lorsque l’objet Paginator n’a encore extrait aucune page, ce paramètre est défini sur Int.max. Une fois qu’une demande initiale a été envoyée à 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 true.
    éditeurDevraitFinir Booléen Marqueur qui indique s’il faut arrêter l’éditeur de l’objet Paginator lorsque la dernière page a été extraite. Un objet Paginator ne peut extraire aucune page une fois qu’il est terminé.
    Valeurs valides :
    • true : une fois la dernière page extraite, l’éditeur n’est pas autorisé à fournir des 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 - first() lancers

    Récupère la première page des résultats renvoyés.

    Si cette méthode ne peut pas récupérer 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 : derniers lancers ()

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

    Si cette méthode ne peut pas récupérer 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 : levers next()

    Récupère la page suivante des résultats renvoyés.

    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 : lancers previous()

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

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