페이지 매김기 API - iOS

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기5분
  • Paginator 클래스는 NowTableService를 통해 ServiceNow Table API에 대한 호출로 반환된 레코드 집합을 반복하기 위한 메서드를 제공합니다. NowTableService paginator() 메서드에 의해 반환되는 객체입니다. 해당 환경 외부에서 이 메서드를 호출하지 마세요.

    표 1. 속성
    이름 유형 설명
    hasNext 부울 가져올 다음 페이지가 있는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 다음 페이지를 사용할 수 있습니다.
    • false: 다음 페이지를 사용할 수 없습니다.
    hasPrevious 부울 가져올 이전 페이지가 있는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 이전 페이지를 사용할 수 있습니다.
    • false: 이전 페이지를 사용할 수 없습니다.
    isBusy 부울 Paginator 개체가 데이터를 가져오는 중인지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 게시자가 사용 중입니다.
    • false: 게시자가 사용 중이 아닙니다.
    isFinished 부울 Paginator 개체가 완료되었는지 여부를 나타내는 플래그입니다. paginator가 완료하도록 구성된 경우 Paginator 객체의 게시자는 마지막 페이지를 가져올 때 완료됩니다. Paginator 개체는 완료된 후 페이지를 가져올 수 없습니다. 자세한 내용은 매개 변수에 대한 publisherShouldFinish 설명을 참조하십시오.
    유효한 값은 다음과 같습니다.
    • true: 게시자가 완료되었습니다.
    • false: 게시자가 완료되지 않았습니다.
    페이지당 항목 정수 페이지당 가져올 항목 수입니다.

    기본값: 20

    페이지 수 정수 기록 세트 내의 총 페이지 수입니다.

    Paginator 개체가 아직 페이지를 가져오지 않은 경우 이 매개 변수는 Int.max로 설정됩니다. 인스턴스에 대한 초기 요청이 이루어진 ServiceNow 후 페이지 수는 인스턴스에서 받은 ServiceNow 실제 페이지 수로 업데이트됩니다.

    페이지 정수 페이지 매김된 기록 세트 내의 현재 페이지입니다.
    게시자 문자열 구독자에게 페이지 매김된 데이터 스트림을 제공하는 게시자입니다.
    주:
    기본적으로 게시자는 작업을 완료하지 않습니다. 이 동작을 변경하려면 속성을 true로 설정합니다publisherShouldFinish.
    publisherShouldFinish 부울 마지막 페이지를 가져왔을 때 Paginator 개체의 게시자를 중지할지 여부를 나타내는 플래그입니다. Paginator 개체는 완료된 후 페이지를 가져올 수 없습니다.
    유효한 값은 다음과 같습니다.
    • true: 마지막 페이지를 가져오면 게시자가 추가 데이터를 제공하지 않습니다. reset() 메서드는 더 이상 작동하지 않습니다.
    • false: 게시자가 완료되지 않고 탐색에 관계없이 모든 메서드가 완전히 작동합니다.

    기본값: false

    페이지 매김기 - first()는

    반환 결과의 첫 번째 페이지를 가져옵니다.

    이 메서드가 첫 번째 페이지를 가져올 수 없으면 PaginationError가 발생합니다.

    표 2. 매개변수
    이름 유형 설명
    없음
    표 3. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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

    페이지 매김기 - last()는

    반환 결과의 마지막 페이지를 가져옵니다.

    이 메서드가 마지막 페이지를 가져올 수 없으면 PaginationError가 발생합니다.

    표 4. 매개변수
    이름 유형 설명
    없음
    표 5. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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

    페이지 매김기 - next() throws

    반환 결과의 다음 페이지를 가져옵니다.

    가져올 페이지가 더 이상 없으면 메서드는 PaginationError를 발생시킵니다.

    표 6. 매개변수
    이름 유형 설명
    없음
    표 7. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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

    페이지 매김기 - previous() throws

    반환 결과의 이전 페이지를 가져옵니다.

    메서드가 이전 페이지를 가져올 수 없는 경우 PaginationError가 발생합니다.

    표 8. 매개변수
    이름 유형 설명
    없음
    표 9. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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

    페이지 매김기 - reset()

    Paginator를 첫 번째 페이지로 다시 설정하지만 반환 결과의 첫 번째 페이지는 반환하지 않습니다.

    표 10. 매개변수
    이름 유형 설명
    없음
    표 11. 반환
    유형 설명
    안 함

    다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.

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