Paginator API - iOS
The Paginator class provides methods for iterating through a record set returned by a call to the ServiceNow Table API through the NowTableService. It is the object that is returned by the NowTableService paginator() methods. Do not call this method outside of that environment.
| Name | Type | Description |
|---|---|---|
| hasNext | Boolean | Flag that indicates whether there is a next page to fetch. Valid values:
|
| hasPrevious | Boolean | Flag that indicates whether there is a previous page to fetch. Valid values:
|
| isBusy | Boolean | Flag that indicates whether the Paginator object is busy fetching data. Valid values:
|
| isFinished | Boolean | Flag that indicates whether the Paginator object is finished. When the
paginator is configured to finish, the Paginator object's publisher finishes when
the last page has been fetched. A Paginator object cannot fetch any pages after it
finishes. For additional information, see the description of the
publisherShouldFinish parameter. Valid values:
|
| itemsPerPage | Integer | Number of items to fetch per page. Default: 20 |
| numberOfPages | Integer | Total number of pages within the record set. When the Paginator object has
not yet fetched any pages, this parameter is set to |
| page | Integer | Current page within the paginated record set. |
| publisher | String | Publisher that supplies the stream of paginated data to the subscribers. Remarque : By default, the publisher does not finish. To change this behaviour, set the
publisherShouldFinish property to true. |
| publisherShouldFinish | Boolean | Flag that indicates whether to stop the Paginator object's publisher when the
last page has been fetched. A Paginator object cannot fetch any pages after it
finishes. Valid values:
Default: false |
Paginator - first() throws
Fetches the first page of the return results.
If this method can't fetch the first page, it throws a PaginationError.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following code example shows how to call this method.
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)
}
}
}
Paginator - last() throws
Fetches the last page of the return results.
If this method can't fetch the last page, it throws a PaginationError.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following code example shows how to call this method.
…
func last() {
result = nil
do {
try paginator.last()
} catch {
self.result = .failure(error)
}
}
…
Paginator - next() throws
Fetches the next page of the return results.
If there are no more pages to fetch, the method throws a PaginationError.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following code example shows how to call this method.
…
func next() {
result = nil
do {
try paginator.next()
} catch {
self.result = .failure(error)
}
}
…
Paginator - previous() throws
Fetches the previous page of the return results.
If the method can't fetch the previous page, it throws a PaginationError.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following code example shows how to call this method.
…
func previous() {
result = nil
do {
try paginator.previous()
} catch {
self.result = .failure(error)
}
}
…
Paginator - reset()
Resets the Paginator back to the first page but doesn't return the first page of the return results.
| Name | Type | Description |
|---|---|---|
| None |
| Type | Description |
|---|---|
| None |
The following code example shows how to call this method.
…
func reset() {
result = nil
paginator.reset()
}
…