NowTableService 클래스 - iOS

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기133분
  • NowTableService 클래스는 기존 ServiceNow 테이블의 레코드에 대한 만들기, 읽기, 업데이트 및 삭제 작업을 수행할 수 있는 함수를 제공합니다.

    표 1. 속성
    이름 유형 설명
    구성 NowServiceConfiguration 서비스가 초기화될 때 제공되는 구성 설정입니다.

    NowTableService - create<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder, writeOptions: FieldWriteOptions, configuration: FetchConfiguration) 비동기 throws

    지정된 코딩 가능 모델을 지정된 테이블에 삽입합니다.

    모델별로 새 기록을 만들려면 모델이 SysIdentifiableModel 프로토콜을 준수해야 합니다. 일반적으로 각 테이블에는 자체 모델이 있습니다.

    모델의 sys_Id 매개변수는 플랫폼에서 생성 ServiceNow 되므로 sysId 생성 중에 무시됩니다. 생성된 플랫폼은 처리기의 completionResult 모델에 반환됩니다.sys_IdServiceNow

    표 2. 매개변수
    이름 유형 설명
    모델 SysIdentifiableModel (영문) 테이블에 삽입할 필드의 모델 정의입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 3. 반환
    유형 설명
    모델 메서드가 성공하면 반환됩니다. sys_Id를 포함하여 지정된 테이블에 삽입된 코드 가능 모델입니다. 이 sys_id 사용하여 이후 메서드 호출에서 이 레코드를 참조합니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    struct User: SysIdentifiableModel {
        var sysId: String = ""
        var name: String
    }
    
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    do {
        let result = try await service.create(user, in: “sys_user”)
    } catch {
        ...
    }

    NowTableService - create<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder, writeOptions: FieldWriteOptions, configuration: FetchConfiguration, completion: @escaping (Result<Model, NowDataError>))

    지정된 코딩 가능 모델을 지정된 테이블에 삽입한 다음 처리기를 completion 실행합니다.

    모델별로 새 기록을 만들려면 모델이 SysIdentifiableModel 프로토콜을 준수해야 합니다. 일반적으로 각 테이블에는 자체 모델이 있습니다. 예:
    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
      switch result {
      case .success(let newUser):
        /// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
      case .failure(let error):
          ...
      }
    }

    모델의 sys_Id 매개변수는 플랫폼에서 생성 ServiceNow 되므로 sysId 생성 중에 무시됩니다. 생성된 플랫폼은 처리기의 completionResult 모델에 반환됩니다.sys_IdServiceNow

    표 4. 매개변수
    이름 유형 설명
    모델 SysIdentifiableModel (영문) 테이블에 삽입할 필드의 모델 정의입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료 @escaping(Result<Model, NowDataError>) 지정된 디코딩 가능한 모델을 만든 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: 모델 - 작성된 모델 유형에 대한 데이터입니다.
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 5. 반환
    유형 설명
    없음

    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
      switch result {
      case .success(let newUser):
        /// 'newUser' contains the platform assigned 'sys_id' to use in subsequent update or delete calls.
      case .failure(let error):
       ...
      }
    }

    NowTableService - create<Model: SysIdentifiableModel>(model: Model, in tableName: String, path: String = Constants.resultPath, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration = nil)

    지정된 테이블에 하나의 코딩 가능한 모델을 삽입합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    모델별로 새 기록을 만들려면 모델이 SysIdentifiableModel 프로토콜을 준수해야 합니다. 일반적으로 각 테이블에는 자체 모델이 있습니다. 예:
    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
      switch result {
      case .success(let newUser):
        /// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
      case .failure(let error):
          ...
      }
    }
    주:
    모델의 매개변수는 sys_Id 생성 중에 무시됩니다. sysId 플랫폼에서 할당 ServiceNow 됩니다. ServiceNow 생성된 sys_Id 플랫폼은 게시자의 receiveValue 콜백 모델에서 반환됩니다.
    표 6. 매개변수
    이름 유형 설명
    모델 SysIdentifiableModel (영문) 테이블에 삽입할 SysIdentifiableModel 모델입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    path 문자열 옵션입니다. 중첩 형식에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz .

    기본값: Constants.resultPath

    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 7. 반환
    유형 설명
    AnyPublisher<Model,NowDataError> 성공: 를 포함하여 sys_Id지정된 테이블에 삽입된 코드 가능 모델입니다. 이 sys_id 사용하여 이후 메서드 호출에서 이 레코드를 참조합니다.

    실패: NowDataError

    @escaping(Result<Model, NowDataError>)

    사용자 [sys_user] 테이블에 단일 기록을 삽입하는 방법을 보여 줍니다.

    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    let publisher: AnyPublisher<User, NowDataError> = service.create(user, in: "sys_user")
    publisher
      .subscribe(on: DispatchQueue.global())
      .receive(on: DispatchQueue.main)
      .sink { [weak self] completion in
        ...
      } receiveValue: { [weak self] newUser in
          /// 'newUser' contains the ServiceNow platform assigned 'sys_id' to use in subsequent update and delete calls.
         ...
      }
      .store(in: &subscriptions)

    NowTableService - createRecord(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 비동기 던지기

    지정된 필드를 포함하는 지정된 테이블에 기록을 삽입합니다.

    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 8. 매개변수
    이름 유형 설명
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 9. 반환
    유형 설명
    데이터 메서드가 성공하면 반환됩니다. 새 기록을 포함하는 데이터 객체입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    do {
        let dataResult: Data = try await tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: configuration)
        let recordResult: NowRecord = dataResult.convertToRecord()
    } catch {
        print("Record creation failed with NowDataError: \(error)")
    }

    NowTableService - createRecord(필드 포함: [FieldName: FieldValue], tableName: String, writeOptions: FieldWriteOptions, 구성: FieldReadConfiguration, 완료: @escaping(Result<Data, NowDataError>)

    지정된 기록을 지정된 테이블에 삽입한 다음 기록이 저장된 후 처리기를 completion 실행합니다.

    필요한 경우 반환 결과를 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있습니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 10. 매개변수
    이름 유형 설명
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 FieldReadConfiguration 옵션입니다. 반환할 필드와 필드에 포함할 항목을 지정하는 구성 옵션입니다.

    기본값 : nil

    완료 @escaping(Result<Data, NowDataError>) 기록이 검색된 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 11. 반환
    유형 설명
    없음

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

    let fields = ["short_description" : "test description"]
    let writeOptions: FieldWriteOptions = [.suppressAutoSysField, .treatInputValuesAsDisplayValues]
    let readConfiguration = FieldReadConfiguration(includeFields: ["number", "short_description"])
    
    tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: readConfiguration) { [weak self] result in
      switch result {
        case .success(let dataResult):
          let recordResult: NowRecord = dataResult.convertToRecord()
        case .failure(let error):
           print("Record creation failed with NowDataError: \(error)")
      }
    }

    NowTableService - createRecord(필드 포함: [FieldName: FieldValue], tableName: String, writeOptions: FieldWriteOptions? = nil, 구성: FieldReadConfiguration? = nil)

    지정된 필드를 포함하는 지정된 테이블에 기록을 삽입합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 12. 매개변수
    이름 유형 설명
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 13. 반환
    유형 설명
    AnyPublisher<Data, NowDataError입니다> 성공: 업데이트된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 지정된 필드를 사용하여 지정된 테이블에 레코드를 삽입하는 함수를 만드는 방법을 보여 줍니다. 호출의 출력은 데이터를 원하는 모델로 변환할 수 있는 ByteArray입니다.

    tableService.createRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: readConfiguration)
        .subscribe(on: DispatchQueue.global())
        .receive(on: DispatchQueue.main)
        .convertToRecord()
        .sink { completion in
            if case let .failure(error) = completion {
                print("Record creation failed with NowDataError: \(error)")
            }
        } receiveValue: { record in
            print("Created NowRecord: \(record)")
        }
        .store(in: &subscriptions)

    NowTableService - delete(_ model: Model, from tableName: String) 비동기 throws

    지정된 테이블에서 지정된 코딩 가능 모델을 삭제합니다.

    표 14. 매개변수
    이름 유형 설명
    모델 모델 SysIdentifiableModel 을 사용하여 테이블에서 삭제할 수 있습니다. 삭제할 기록의 sys_id 포함되어야 합니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    표 15. 반환
    유형 설명
    없음 메서드가 성공하면 아무 것도 반환되지 않습니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    do { 
        try await tableService.delete(model, from: tableName)
        print("Deletion successful.")
    } catch {
        print("Deletion failed with NowDataError: \(error)")
    }

    NowTableService - delete(_ model: Model, from tableName: String, completion: @escaping (Result<Void, NowDataError>))

    지정된 테이블에서 지정된 코딩 가능 모델을 삭제한 다음 적절한 completion 핸들러를 실행합니다.

    표 16. 매개변수
    이름 유형 설명
    모델 모델 SysIdentifiableModel 을 사용하여 테이블에서 삭제할 수 있습니다. 삭제할 기록의 sys_id 포함되어야 합니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    완료 @escaping(Result<Void, NowDataError>) 지정된 코딩 가능 모델을 삭제한 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 아무 것도 반환되지 않음
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 17. 반환
    유형 설명
    없음

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

    tableService.delete(Incident(sysId: sysId), from: tableName) { [weak self] result in
      switch result {
        case .success:
          // Delete successfully
        case .failure(let error):
          // Failed to delete with NowDataError
      }
    }

    NowTableService - delete(_ model: Model, from tableName: String)

    지정된 테이블에서 지정된 코딩 가능 모델을 삭제합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 18. 매개변수
    이름 유형 설명
    모델 모델 SysIdentifiableModel 을 사용하여 테이블에서 삭제할 수 있습니다. 삭제할 기록의 sys_id 포함되어야 합니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    표 19. 반환
    유형 설명
    AnyPublisher<Void, NowDataError입니다> 성공: 아무 것도 반환되지 않음

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    tableService.delete(Incident(sysId: sysId), from: tableName)
      .subscribe(on: DispatchQueue.global())
      .receive(on: DispatchQueue.main)
      .sink { [weak self] completion in
        switch completion {
          case .finished:
            // Delete successfully
          case .failure(let error):
            // Failed to delete with NowDataError
        }
      } receiveValue: { _ in
      }
      .store(in: &subscriptions)
    

    NowTableService - deleteRecord(sysId: SysID, from tableName: String) 비동기 throws

    지정된 테이블에서 지정된 기록을 삭제합니다.

    표 20. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 기록의 Sys_id입니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    표 21. 반환
    유형 설명
    없음 메서드가 성공하면 아무 것도 반환되지 않습니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    do {
        try await tableService.deleteRecord(sysId: sysId, from: tableName)
        print("Deletion successful.")
    } catch {
        print("Deletion failed with NowDataError: \(error)")
    }

    NowTableService - deleteRecord(sysId: SysID, from tableName: String, completion: @escaping (Result<Void, NowDataError>))

    지정된 테이블에서 지정된 기록을 삭제한 후 해당 객체를 실행합니다 completion .

    표 22. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 기록의 Sys_id입니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    완료 @escaping(Result<Void, NowDataError>) 성공: 아무 것도 반환되지 않습니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 23. 반환
    유형 설명
    없음

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

    tableService.deleteRecord(sysId: sysId, from: tableName) { [weak self] result in
      switch result {
        case .success:
          // Delete successfully
        case .failure(let error):
          // Failed to delete with NowDataError
      }
    }

    NowTableService - deleteRecord(sysId: SysID, from tableName: String)

    지정된 테이블에서 지정된 기록을 삭제합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 24. 매개변수
    이름 유형 설명
    sysId 문자열 삭제할 기록의 Sys_id입니다.
    tableName에서 문자열 인시던트와 같이 정보를 삭제할 테이블의 이름입니다.
    표 25. 반환
    유형 설명
    AnyPublisher<Void, NowDataError입니다> 성공: 아무 것도 반환되지 않음

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 지정된 테이블의 레코드를 삭제하는 함수를 만드는 방법을 보여 줍니다.

    tableService.deleteRecord(sysId: sysId, from: tableName) 
        .subscribe(on: DispatchQueue.global())
        .receive(on: DispatchQueue.main)
        .sink { completion in
            switch completion {
            case .finished:
                print("Record deleted.")
            case .failure(let error):
                print("Deletion failed with NowDataError: \(error)")
            }
        } receiveValue: { _ in }
        .store(in: &subscriptions)

    NowServiceTable - init(configuration: NowServiceConfiguration, coreServiceProvider: NowCoreServiceProviding? = nil)

    NowTableService 개체를 만듭니다.

    표 26. 매개변수
    이름 유형 설명
    구성 NowServiceConfiguration 서비스를 만들 때 사용할 구성 매개변수입니다.
    'coreServiceProvider'를 선택합니다. NowCoreServiceProviding (영문) 옵션입니다. NowTableService와 연결할 서비스 공급자입니다.

    기본값 : nil

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

    guard let coreService = NowSDK.core() else {
      // Error with NowServiceError.sdkNotConfigured
      return
    }
    
    guard 
      let instanceUrl = URL(string: "http://sample.service-now.com") , 
      let serviceConfig = NowSDK.makeServiceConfiguration(for: instanceUrl) else {
        // Could not create service – 
        // NowServiceError.serviceConfigurationInvalid
        return
      }
    let tableService = NowTableService (configuration: serviceConfig, coreServiceProvider: coreService)

    NowTableService - model<Model: Decodable>(sysId: SysID? = nil, from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) async throws

    지정된 테이블에서 디코딩 가능한 모델을 검색할 수 있습니다.

    테이블 API 응답은 다음과 유사한 매개변수 내에 result 중첩됩니다.
    {
      "result": [
        { "name": "Ash Williams" },
        { "name": "Lionel Cosgrove" },
        { "name": "Laurie Strode" }
      ]
    }
    결과 집합이 큰 경우 paginator 함수 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 중 하나를 사용하거나 페이지 매김된 모델을 가져옵니다.
    표 27. 매개변수
    이름 유형 설명
    sysId로 SysID 옵션입니다. 반환할 기록의 Sys_id입니다. 특정 기록을 검색하려면 sys_id 제공합니다.

    기본값 : nil

    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    path 문자열 중첩 형식에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz .

    기본값: 결과

    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 28. 반환
    유형 설명
    모델 메서드가 성공하면 반환됩니다. 디코딩 가능한 모델.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    struct User: Codable { 
        var name: String
    } 
    
    let service: NowTableService = ... 
    do {
        let result = try await service.model([User].self, from: "sys_user", path: "result")
        print("Fetched \(users.count) users")
    } catch {
        dump(error) 
    }

    다음 코드 예제에서는 sys_id로 단일 Decodable 모델을 가져오는 방법을 보여 줍니다. [User].self 대신 User.self와 같은 단일 모델 유형을 사용합니다.

    let result = try await service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result") 

    NowTableService - model<Model: Decodable>(_ type: Model.Type, with sysId: SysID? = nil, from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil, completion: @escaping (Result<Model, NowDataError>))

    지정된 테이블에서 디코딩 가능한 모델을 조회합니다.

    테이블 API 응답은 다음과 유사한 매개변수 내에 result 중첩됩니다.
    {
      "result": [
        { "name": "Ash Williams" },
        { "name": "Lionel Cosgrove" },
        { "name": "Laurie Strode" }
      ]
    }

    이 함수를 사용하여 중첩된 출력 대신 디코딩 가능한 모델을 얻을 수 있습니다.

    표 29. 매개변수
    이름 유형 설명
    유형 Model.Type 디코딩할 값의 유형입니다.
    sysId로 문자열 옵션입니다. 반환할 기록의 Sys_id입니다.

    기본값: 설정에 따라 반환된 모든 기록입니다 configuration .

    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    path 문자열 옵션입니다. 중첩 형식에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz .

    기본값: Constants.resultPath

    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.

    기본값: .default

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료@escaping(Result<Model, NowDataError>)지정된 디코딩 가능한 모델을 검색한 후 실행할 완료 핸들러입니다.
    완료 처리기에 대한 반환 값:
    • 성공: 요청된 모델 유형에 대한 데이터입니다.
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 30. 반환
    유형 설명
    없음

    디코딩된 User 모델 컬렉션을 검색합니다.

    struct User: SysIdentifiableModel {
        var sysId: String = ""
        var name: String
    }
    let service: NowTableService = ...
    let user = User(name: "Ash Williams")
    service.create(Incident(fields: fields), in: tableName, writeOptions: writeOptions, configuration: fetchConfiguration) { [weak self] result in
      switch result {
      case .success(let newUser):
        /// 'newUser' contains the platform assigned 'sys_id', use in subsequent 'update' or 'delete' calls.
      case .failure(let error):
       ...
     }
    }

    디코딩 가능한 단일 모델을 sys_id로 가져오려면 [User].self 대신 User.self와 같은 단일 모델 유형을 사용합니다.

    service.model(User.self, with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result") { resultin ... }

    NowTableService - model<Model: Decodable>(sysId: SysID? = nil, from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil)

    지정된 테이블에서 디코딩 가능한 모델을 검색할 수 있는 게시자를 만듭니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    테이블 API 응답은 다음과 유사한 매개변수 내에 result 중첩됩니다.
    {
      "result": [
        { "name": "Ash Williams" },
        { "name": "Lionel Cosgrove" },
        { "name": "Laurie Strode" }
      ]
    }
    결과 집합이 큰 경우 paginator 함수 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 중 하나를 사용하거나 페이지 매김된 모델을 가져옵니다.
    표 31. 매개변수
    이름 유형 설명
    sysId로 SysID 옵션입니다. 반환할 기록의 Sys_id입니다. 특정 기록을 검색하려면 sys_id 제공합니다.

    기본값 : nil

    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    path 문자열 중첩 형식에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 foo.bar.baz .

    기본값: 결과

    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 32. 반환
    유형 설명
    AnyPublisher<Model, NowDataError입니다> 성공: 디코딩 가능한 모델을 반환하는 게시자입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    [Users].self와 같이 유형별로 디코딩된 사용자 모델을 제공하는 게시자를 얻으려면 점으로 구분된 경로를 지정하여 모델을 가져옵니다.

    struct User: Codable {
      varname: String
    }
    
    let service: NowTableService = ...
    let publisher: AnyPublisher<[User], NowDataError> = service.model(from: "sys_user", path: "user.photos.gps_location")
     

    디코딩 가능한 단일 모델을 sys_id으로 가져오려면 [User].self 대신 단일 User.self 모델 유형을 사용합니다.

    let publisher: AnyPublisher<User, NowDataError> = service.model(with: "5137153cc611227c000bbd1bd8cd2005", from: "sys_user", path: "result")

    NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)

    기록 페이지를 반복할 수 있는 페이지 매김기를 만듭니다.

    페이지네이터의 publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    주:
    매개변수에서 configuration 재정의되지 않는 한, paginator는 페이지당 20개의 항목을 반환합니다. ACL 평가에 따라 페이지에서 가져오는 실제 항목 수가 기본값 또는 구성된 값보다 적을 수 있습니다.
    표 33. 매개변수
    이름 유형 설명
    tableName 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 34. 반환
    유형 설명
    paginator<data입니다> 성공: 지정된 기록을 포함하는 객체 페이지네이터.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    private var tableService: NowTableService?
    // Paginator creation uses type inference to determine the response type.
    private var paginator: Paginator<[CustomerServiceCase]>?
    
    func initializeTableService(for instanceUrl: URL) {
      makeTableService(instanceUrl: instanceUrl) { [weak self] result in
        guard let self = self else { return }
                
        switch result {
        case .success(let tableService):
          self.tableService = tableService
          // Create a paginator that iterates over pages of customer support cases. The paginator's response type is
          // inferred from the paginator's type definition (e.g. `Paginator<[CustomerServiceCase]>`).
          self.paginator = tableService.paginator(from: Self.tableName, configuration: self.fetchConfiguration)
          // Subscribe to the paginator's publisher so you are able to receive paged results.
          self.subscribeToPaginatorPublisher()
          // Ready to start fetching data, inform the view controller.
          self.onReady(self)
        case .failure(let error):
          debugPrint("Creating table service failed with error: \(error.localizedDescription)")
          self.tableService = nil
          self.paginator = nil
        }
      }
    }

    NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil)

    중첩을 처리하는 디코딩된 모델의 페이지 반복을 활성화하는 페이지 매김기를 만듭니다.

    ServiceNow REST 테이블 API 응답은 다음과 유사한 결과 속성 내에 중첩됩니다.
    {
      "result": [
        { "name": "Ash Williams" },
        { "name": "Lionel Cosgrove" },
        { "name": "Laurie Strode" }
      ]
    }
    디코딩된 User 모델을 제공하는 paginator를 얻으려면 점으로 구분된 경로를 지정하여 paginator를 가져옵니다. 이 경우 result.
    struct User: Codable {
      varname: String
    }
    
    let service: NowTableService = ...
    let paginator: Paginator<[User]> = service.paginator(from: "sys_user", path: "result")
    주:
    매개변수에서 configuration 재정의되지 않는 한, paginator는 페이지당 20개의 항목을 반환합니다. ACL 평가에 따라 페이지에 대해 가져온 실제 항목 수가 기본값 또는 구성된 값보다 작을 수 있습니다.
    Paginator 객체를 얻은 후 Combine Publisher를 구독하여 데이터 수신을 시작합니다.
    paginator.publisher
      .subscribe(on: DispatchQueue.global())
      .receive(on: DispatchQueue.main)
      .sink { … }
      .store(in: &subscriptions)
    주:
    모든 결합 구독과 마찬가지로 예기치 않은 결과를 방지하기 위해 구독을 유지해야 합니다.
    표 35. 매개변수
    이름 유형 설명
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    경로 문자열 중첩 형식에 대해 점으로 구분된 경로입니다. 예를 들어, 더 깊은 중첩의 경우 result 또는 result.user.photos 입니다. 사용자 지정 경로를 지정하면 중첩된 데이터를 가져오거나 반복할 수 있습니다.

    기본값: 결과

    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 36. 반환
    유형 설명
    paginator<data입니다> 성공: 페이징된 디코딩 가능한 모델을 포함하는 페이지네이터 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 디코딩된 User 모델을 제공하는 Paginator 객체를 가져오는 방법을 보여줍니다. 컴파일러가 사용자 모델 컬렉션([User])을 반환하도록 힌트를 주고 사용자가 결과 경로 아래에 중첩되어 있음을 Paginator 객체에 알려서 원하는 Paginator 객체를 가져올 수 있습니다.

    struct User: Codable {
      var name: String
    }
    
    let service: NowTableService = ...
    let paginator: Paginator<[User]> = service.paginator(from: "sys_user", path: "result")
    주:
    Table API는 항상 결과 경로 아래에 중첩된 결과를 반환하므로 매개 변수를 안전하게 제거할 path 수 있습니다.

    NowTableService - record(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil) 비동기 던지기

    인스턴스의 지정된 테이블에서 지정된 기록을 조회합니다 ServiceNow .

    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    표 37. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 38. 반환
    유형 설명
    데이터 메서드가 성공하면 반환됩니다. 지정된 기록을 포함하는 데이터 객체입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    func fetchTableRecord(sysId: String, tableName: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = []) async throws -> NowRecord {
        let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
        do {
            let dataResult: Data = try await tableService.record(with: sysId, from: tableName, configuration: configuration)
            let recordResult: NowRecord = dataResult.convertToRecord()
            return recordResult
        } catch {
            print("Fetch failed with NowDataError: \(error)")
            throw error
        }
    }

    NowTableService - 기록(sysId: SysID, tableName: 문자열, 구성: FieldReadConfiguration, 완료: @escaping(결과<데이터, NowDataError>)

    지정된 테이블에서 지정된 기록을 검색한 다음 기록이 검색된 후 완료 처리기를 실행합니다.

    필요한 경우 반환 결과를 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있습니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()
    큰 결과 집합의 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 경우 함수를 사용하여 페이지 매김된 결과를 가져옵니다.
    표 39. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료 @escaping(Result<Data, NowDataError>) 기록이 검색된 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 40. 반환
    유형 설명
    없음

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

    func fetchTableRecords( tableName: String, filterQuery: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = [], limit: Int?) {
      let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
      let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
      tableService.records (from: tableName, configuration: fetchConfiguration) { [weak self] result in
        switch result {
          case .success(let dataResult):
            let recordResult: [NowRecord] = dataResult.convertToRecords()
            // Return recordResult
    
          case .failure(let error):
            // Failed to fetch record with NowDataError
        }
      }
    }

    NowTableService - 기록(sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil)

    인스턴스의 지정된 테이블 ServiceNow 에서 지정된 기록을 검색하는 게시자를 만듭니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    표 41. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 42. 반환
    유형 설명
    AnyPublisher<Data, NowDataError입니다> 성공: 지정된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 지정된 필드를 사용하여 지정된 테이블에서 지정된 레코드를 검색하는 함수를 만드는 방법을 보여 줍니다. 호출의 출력은 데이터를 원하는 모델로 변환할 수 있는 ByteArray입니다.

    tableService.record(with: sysId, from: tableName, configuration: fetchConfiguration)
        .subscribe(on: DispatchQueue.global())
        .receive(on: DispatchQueue.main)
        .convertToRecord()
        .sink { completion in
            if case let .failure(error) = completion {
                print("Record retrieval failed with NowDataError: \(error)")
            }
        } receiveValue: { record in
            print("Successfully retrieved record: \(record)")
        }
        .store(in: &subscriptions)

    NowTableService - records(from tableName: String, configuration: FetchConfiguration? = nil) 비동기 던지기

    지정된 테이블에서 기록을 조회합니다.

    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    큰 결과 집합의 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 경우 함수를 사용하여 페이지 매김된 결과를 가져옵니다.
    표 43. 매개변수
    이름 유형 설명
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 44. 반환
    유형 설명
    데이터 메서드가 성공하면 반환됩니다. 지정된 기록을 포함하는 데이터 객체입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    func fetchTableRecords( tableName: String, filterQuery: String,
     includeFields: [FieldName] = [FieldName](), readOptions:
     FieldReadConfiguration.Options = [], limit: Int?) {
        let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
        let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
        do {
          let dataResult: Data = try await tableService.records(from: tableName, configuration: config)
          let recordResult: [NowRecord] = dataResult.convertToRecords()
          // return recordResult
        } catch {
          print("Fetch failed with NowDataError: \(error)")
          throw error 
      }
    }

    NowTableService - 기록(tableName에서: 문자열, 구성: FetchConfiguration? = nil, 완료: @escaping(결과<데이터, NowDataError>))

    지정된 테이블에서 레코드를 검색한 다음 레코드를 검색한 후 핸들러를 실행합니다 completion .

    필요한 경우 반환 결과를 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있습니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()
    큰 결과 집합의 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 경우 함수를 사용하여 페이지 매김된 결과를 가져옵니다.
    표 45. 매개변수
    이름 유형 설명
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료 @escaping(Result<Data, NowDataError>) 기록이 검색된 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 46. 반환
    유형 설명
    없음

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

    func fetchTableRecords( tableName: String, filterQuery: String, includeFields: [FieldName] = [FieldName](), readOptions: FieldReadConfiguration.Options = [], limit: Int?) {
      let readConfig = FieldReadConfiguration(includeFields: includeFields, options: readOptions)
      let config = FetchConfiguration(Filter(query: filterQuery), limit, readConfig)
      tableService.records (from: tableName, configuration: fetchConfiguration) { [weak self] result in
        switch result {
          case .success(let dataResult):
            let recordResult: [NowRecord] = dataResult.convertToRecords()
            // return recordResult
    
          case .failure(let error):
            // Failed to fetch record with NowDataError
        }
      }
    }

    NowTableService - records(from tableName: String, configuration: FetchConfiguration? = nil)

    지정된 테이블에서 기록을 검색할 수 있는 게시자를 만듭니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    큰 결과 집합의 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil) 경우 함수를 사용하여 페이지 매김된 결과를 가져옵니다.
    표 47. 매개변수
    이름 유형 설명
    tableName에서 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 48. 반환
    유형 설명
    AnyPublisher<Data, NowDataError입니다> 성공: 지정된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 지정된 테이블에서 여러 레코드를 가져오는 함수를 만드는 방법을 보여 줍니다. 미래의 어느 시점에서 요청이 실행되도록 예약하고 ByteArray 응답을 반환하는 객체를 만듭니다.

    tableService.records(from: tableName, configuration: fetchConfiguration)
        .subscribe(on: DispatchQueue.global())
        .receive(on: DispatchQueue.main)
        .convertToRecords()
        .sink { completion in
            if case let .failure(error) = completion {
                print("Record retrieval failed with NowDataError: \(error)")
            }
        } receiveValue: { records in
            print("Successfully retrieved records: \(records)")
        }
        .store(in: &subscriptions)

    NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil) 비동기 던지기

    지정된 테이블에서 지정된 코딩 가능 모델을 업데이트합니다.

    표 49. 매개변수
    이름 유형 설명
    모델 모델 테이블에서 업데이트할 SysIdentifiableModel 모델입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 50. 반환
    유형 설명
    모델 메서드가 성공하면 반환됩니다. 지정된 테이블에서 업데이트된 디코딩 가능한 모델입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    struct User: SysIdentifiableModel {
        var sysId: String = ""
        var name: String}
         
    func updateUser(user: User) async throws -> User {
        do {
            let result = try await tableService.update(user, in: “sys_user”)
            return result
        } catch {
            print("Update failed with NowDataError: \(error)")
            throw error
        }
    }

    NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil, 완료: @escaping(Result<Model, NowDataError>))

    지정된 테이블에서 지정된 Codable 모델을 업데이트한 다음 처리기를 completion 실행합니다.

    표 51. 매개변수
    이름 유형 설명
    모델 모델 테이블에서 업데이트할 SysIdentifiableModel 모델입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료 @escaping(Result<Model, NowDataError>) 지정된 코딩 가능 모델을 업데이트한 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 모델
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 52. 반환
    유형 설명
    없음

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

    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let user = User(sysId: "12345", name: "abel")
    let coder: Coder = .default
    
    tableService.update(user, in: "sys_user") { [weak self] result in
      switch result {
        case .success(let model):
          do {
            let data = try coder.jsonEncoder.encode(model)
            self?.publish(data: data)
          } catch {
            self?.publish(result: .failure(error))
          }            
        case .failure(let error):
          // Failed to update with NowDataError
          self?.publish(result: .failure(error))
      }
    }

    NowTableService - update<Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil)

    지정된 테이블에서 지정된 코드 가능 모델을 업데이트합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    표 53. 매개변수
    이름 유형 설명
    모델 모델 테이블에서 업데이트할 SysIdentifiableModel 모델입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    코더 코더 옵션입니다. 인스턴스와 주고받는 ServiceNow 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다.
    가능한 값:
    • default: 기본 인코더는 디바이스 로캘시간대를 사용하여 yyy-MM-dd HH:mm:ss 형식을 사용하여 날짜 형식을 지정합니다.
    • 사용자 정의 (JSONEncoder, JSONDecoder) :

      사용자 지정 코더를 사용하여 JSON 디코딩/인코딩을 보다 세밀하게 제어할 수 있습니다.

      이 열거형은 고유한 JSONEncoderJSONDecoder를 제공하는 데만 사용합니다(예: 특수 날짜 형식, 표준 시간대 또는 로케일을 사용하는 경우).

      let myEncoder = JSONEncoder()
      myEncoder.dateFormat = …
      let myDecoder = JSONDecoder()
      myDecoder.dateFormat = …
      let coder: Coder = .custom(myEncoder, myDecoder)

    기본값: .default

    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 54. 반환
    유형 설명
    AnyPublisher<Model, NowDataError입니다> 성공: 지정된 테이블에서 업데이트된 디코딩 가능한 모델입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    struct User: SysIdentifiableModel {
      var sysId: String = ""
      var name: String
    }
    
    let user = User(sysId: "12345", name: "abel")
    let coder: Coder = .default
    
    tableService.update(user, in: "sys_user")
      .subscribe(on: DispatchQueue.global())
      .receive(on: DispatchQueue.main)
      .sink { [weak self] completion in
        if case let .failure(error) = completion {
          // Failed to update with NowDataError
          self?.publish(result: .failure(error))
        }
      } receiveValue: { [weak self] updatedModel in
        do {
          let data = try coder.jsonEncoder.encode(updatedModel)
          self?.publish(data: data)
        } catch {
          // Failed to update with NowDataError
          self?.publish(result: .failure(error))
        }
      }
      .store(in: &subscriptions)

    NowTableService - updateRecord(sysId: SysID, tableName: String, withfields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 비동기 던지기

    지정된 기록을 지정된 필드로 업데이트합니다.

    데이터를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있습니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 55. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 56. 반환
    유형 설명
    데이터 메서드가 성공하면 반환됩니다. 업데이트된 기록을 포함하는 데이터 객체입니다.
    NowDataError 메서드가 실패할 때 throw됩니다.
    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

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

    do { 
        let dataResult: Data = try await tableService.updateRecord(with: fields, in: tableName, writeOptions: writeOptions, configuration: configuration) 
        let recordResult: NowRecord = dataResult.convertToRecord() 
    } catch { 
        print("Record update failed with NowDataError: \(error)") 
    }

    NowTableService - updateRecord(sysId: SysID, tableName: 문자열: 문자열, 필드 포함: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, 구성: FieldReadConfiguration? = nil, 완료: @escaping (Result<Data, NowDataError>)

    지정된 기록을 지정된 필드로 업데이트한 다음 기록이 저장되면 핸들러를 실행합니다 completion .

    필요한 경우 반환 결과를 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있습니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myResult.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 57. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    완료 @escaping(Result<Data, NowDataError>) 기록이 검색된 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

        액세스 토큰에 오류가 있을 때 throw됩니다.

      • 첨부 파일 유효성 확인

        첨부 파일 확인에 실패할 때 발생합니다.

      • badResponse (상태 코드 : HTTPStatusCode)
        • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

        요청이 예기치 않은 응답을 반환할 때 발생합니다.

      • cannotDecodeModel (디코딩 오류)
        • DecodingError: 디코딩 오류가 감지되었습니다.

        코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotDecodeProperty(type: Any, from: String)
        • type: 문자열에서 디코딩할 래핑된 유형입니다.
        • from: 지정된 타입으로 디코딩할 문자열.

        문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

      • cannotEncodeModel (인코딩 오류)
        • EncodingError: 인코딩 오류가 탐지되었습니다.

        코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

      • cannotParseResponse (파스 응답)

        인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

      • 잘못된 URL

        URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

      • missingAttachmentMetadata 님

        첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

      • missingServiceConfiguration

        예상 서비스 구성이 없을 때 throw됩니다.

      • missingSysID

        예상 sys_id 매개 변수가 없을 때 발생합니다.

      • 네트워크(NetworkServiceError)
        • genericError (문자열)
        • operationCanceled (운영이 취소됨)
        • serviceDisabled (영문)
        • serverError(오류)
        • systemError(오류)

        네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    표 58. 반환
    유형 설명
    없음

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

    tableService.updateRecord(sysId: sysId, in: tableName, with: fields, writeOptions: writeOptions, configuration: readConfiguration) { [weak self] result in
      switch result {
        case .success(let data):
          self?.publish(data: data)
        case .failure(let error):
           // Failed to update with NowDataError
      }
    }

    NowTableService - updateRecord(sysId: SysID, in tableName: String, withfields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, 구성: FieldReadConfiguration? = nil)

    지정된 기록을 지정된 필드로 업데이트합니다.

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코딩 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator<Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil) 수 있는 데이터를 내보냅니다. 또는 편의 함수 convertToRecords() 를 사용하여 데이터를 NowRecord 객체로 변환할 수 있습니다. 다음은 게시자가 NowRecords를 내보내도록 변환하는 방법을 보여 줍니다.
    let dataPublisher: AnyPublisher<Data, NowDataError> = ...
    let recordsPublisher: AnyPublisher<[NowRecord], NowDataError> = myPublisher.convertToRecords()
    주:
    기록 내의 모든 필드를 업데이트할 수 없습니다. 예를 들어, 프리픽스가 sys_ 인 필드는 일반적으로 자동으로 생성되어 업데이트할 수 없는 시스템 매개변수입니다. 지정되지 않고 시스템에서 자동 생성되지 않은 필드는 연결된 데이터 형식의 null 값으로 설정됩니다.
    표 59. 매개변수
    이름 유형 설명
    sysId 문자열 인스턴스에서 반환할 기록의 Sys_id ServiceNow 입니다.
    필드 포함 [필드 이름: 필드 값] 기록에 포함할 필드의 이름-값 쌍입니다.
    tableName의 문자열 인시던트와 같은 기록을 작성할 테이블의 이름입니다.
    writeOptions FieldWriteOptions (필드 쓰기 옵션) 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값 : nil

    구성 구성 페치(FetchConfiguration) 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 내용을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 레코드가 반환됩니다.

    표 60. 반환
    유형 설명
    AnyPublisher<Data, NowDataError입니다> 성공: 업데이트된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

    • accessToken(AccessTokenProviderError)
      • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
        • accessTokenRetrievalFailed
        • userSessionError(_ 오류: 오류)

      액세스 토큰에 오류가 있을 때 throw됩니다.

    • 첨부 파일 유효성 확인

      첨부 파일 확인에 실패할 때 발생합니다.

    • badResponse (상태 코드 : HTTPStatusCode)
      • HTTPStatusCode: 인스턴스에서 받은 상태 코드입니다.

      요청이 예기치 않은 응답을 반환할 때 발생합니다.

    • cannotDecodeModel (디코딩 오류)
      • DecodingError: 디코딩 오류가 감지되었습니다.

      코딩 가능한 모델을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotDecodeProperty(type: Any, from: String)
      • type: 문자열에서 디코딩할 래핑된 유형입니다.
      • from: 지정된 타입으로 디코딩할 문자열.

      문자열로 래핑된 값을 JSON에서 디코딩할 수 없을 때 발생합니다.

    • cannotEncodeModel (인코딩 오류)
      • EncodingError: 인코딩 오류가 탐지되었습니다.

      코딩 가능 모델을 JSON으로 인코딩할 수 없는 경우 발생합니다.

    • cannotParseResponse (파스 응답)

      인스턴스의 응답을 예상 형식으로 구문 분석할 수 없을 때 발생합니다.

    • 잘못된 URL

      URL을 구성할 수 없을 때 발생합니다. 예를 들어 문자열에 URL에 잘못된 문자가 포함되어 있거나 빈 문자열인 경우입니다.

    • missingAttachmentMetadata 님

      첨부 파일 메타데이터 헤더가 없을 때 발생합니다.

    • missingServiceConfiguration

      예상 서비스 구성이 없을 때 throw됩니다.

    • missingSysID

      예상 sys_id 매개 변수가 없을 때 발생합니다.

    • 네트워크(NetworkServiceError)
      • genericError (문자열)
      • operationCanceled (운영이 취소됨)
      • serviceDisabled (영문)
      • serverError(오류)
      • systemError(오류)

      네트워크 서비스에 오류가 발생했을 때 throw됩니다.

    이 예제에서는 지정된 필드를 사용하여 지정된 테이블의 레코드를 업데이트하는 함수를 만드는 방법을 보여 줍니다. 호출의 출력은 데이터를 원하는 모델로 변환할 수 있는 ByteArray입니다.

    tableService.updateRecord(sysId: sysId, in: tableName, with: fields, writeOptions: writeOptions, configuration: readConfiguration)
        .subscribe(on: DispatchQueue.global())
        .receive(on: DispatchQueue.main)
        .convertToRecord()
        .sink { completion in
            if case let .failure(error) = completion {
                print("Update failed with NowDataError: \(error)")
            }
        } receiveValue: { record in
            print("Record updated: \(record)")
        }
        .store(in: &subscriptions)