ページネータ API - iOS
Paginator クラスは、NowTableService を介したServiceNow テーブル API の呼び出しによって返されるレコードセットを反復処理するためのメソッドを提供します。これは、NowTableService paginator() メソッドによって返されるオブジェクトです。その環境外でこのメソッドを呼び出さないでください。
| 名前 | タイプ | 説明 |
|---|---|---|
| hasNext | ブール | フェッチする次のページがあるかどうかを示すフラグ。 有効な値:
|
| has前へ | ブール | フェッチする前のページがあるかどうかを示すフラグ。 有効な値:
|
| isBusy | ブール | Paginator オブジェクトがデータのフェッチでビジー状態かどうかを示すフラグ。 有効な値:
|
| isFinished | ブール | ページネーションオブジェクトが終了したかどうかを示すフラグ。ページネータが終了するように構成されている場合、ページネータオブジェクトのパブリッシャは最後のページがフェッチされたときに終了します。Paginator オブジェクトは、終了後にページをフェッチできません。詳細については、パラメーターの説明 publisherShouldFinish を参照してください。 有効な値:
|
| itemsPerPage | 整数 | ページごとにフェッチするアイテムの数。 デフォルト:20 |
| numberOfPages | 整数 | レコードセット内の合計ページ数 Paginator オブジェクトがまだページをフェッチしていない場合、このパラメーターは |
| ページ | 整数 | ページネーションされたレコードセット内の現在のページ。 |
| publisher | 文字列 | ページ分割されたデータのストリームをサブスクライバーに提供するパブリッシャー。 注: 既定では、発行元は終了しません。この動作を変更するには、プロパティを true に設定しますpublisherShouldFinish。 |
| publisherShouldFinish | ブール | 最後のページがフェッチされたときにページネーションオブジェクトのパブリッシャーを停止するかどうかを示すフラグ。Paginator オブジェクトは、終了後にページをフェッチできません。 有効な値:
デフォルト:false |
Paginator - first() throws
返される結果の最初のページをフェッチします。
このメソッドが最初のページをフェッチできない場合は、 PaginationError がスローされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
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
返される結果の最後のページをフェッチします。
このメソッドが最後のページをフェッチできない場合は、 PaginationError がスローされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func last() {
result = nil
do {
try paginator.last()
} catch {
self.result = .failure(error)
}
}
…
Paginator - next() throws
返された結果の次のページをフェッチします。
フェッチするページがなくなった場合、このメソッドは PaginationError をスローします。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func next() {
result = nil
do {
try paginator.next()
} catch {
self.result = .failure(error)
}
}
…
Paginator - previous() throws
返された結果の前のページをフェッチします。
メソッドが前のページをフェッチできない場合は、 PaginationError がスローされます。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func previous() {
result = nil
do {
try paginator.previous()
} catch {
self.result = .failure(error)
}
}
…
Paginator - reset()
ページネータをリセットして最初のページに戻しますが、返された結果の最初のページは返されません。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次のコード例は、このメソッドを呼び出す方法を示しています。
…
func reset() {
result = nil
paginator.reset()
}
…