NowTableService 클래스 - iOS

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

    표 1. 속성
    이름 유형 설명
    구성 NowService구성 서비스를 초기화할 때 제공된 구성 설정입니다.

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

    지정된 Codable 모델을 지정된 테이블에 삽입합니다.

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

    모델의 sys_Id 매개변수는 플랫폼에서 생성 ServiceNow 되므로 생성하는 sysId 동안 무시됩니다. 생성된 플랫폼은 처리기의 Result 모델에 반환됩니다completion.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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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 동안 무시됩니다. 생성된 플랫폼은 처리기의 Result 모델에 반환됩니다completion.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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

    실패: NowDataError

    @escaping(결과<모델, 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) async throws

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

    publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions, configuration: FieldReadConfiguration, completion: @escaping (Result&lt;Data, NowDataError>)

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

    필요한 경우 반환 결과를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil

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

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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(with fields: [FieldName: FieldValue], in tableName: String, writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil)

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

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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) async throws

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

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Void, NowDataError>))

    지정된 테이블에서 지정된 코드 가능 모델을 삭제한 다음 적절한 completion 처리기를 실행합니다.

    표 16. 매개변수
    이름 유형 설명
    모델 모델 테이블에서 삭제할 SysIdentifiableModel 입니다. 삭제할 기록의 sys_id 포함해야 합니다.
    tableName에서 문자열 인시던트 등 정보를 삭제할 테이블의 이름입니다.
    완료 @escaping (result&lt;void, NowDataError>) 지정된 코드 가능 모델을 삭제한 후 실행할 완성 핸들러입니다.
    반환 값:
    • 성공: 반환된 항목이 없음
    • 실패: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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&lt;Void, NowDataError> 성공: 반환된 항목이 없음

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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됩니다.

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Void, NowDataError>))

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

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

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Void, NowDataError> 성공: 반환된 항목이 없음

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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. 매개변수
    이름 유형 설명
    구성 NowService구성 서비스를 만들 때 사용할 구성 매개 변수입니다.
    코어서비스제공자 NowCoreService제공 옵션입니다. 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&lt;model: Decodable>(with 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" }
      ]
    }
    큰 결과 집합의 경우 페이지네이터 함수 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator&lt;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입니다.

    기본값: result

    코더 코더 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다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됩니다.

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;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&lt;Model, NowDataError>))

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

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

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

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

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

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

    기본값: Constants.resultPath

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

    기본값: .default

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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&lt;model: Decodable>(with 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" }
      ]
    }
    큰 결과 집합의 경우 페이지네이터 함수 NowTableService - paginator(from tableName: String, configuration: FetchConfiguration? = nil)NowTableService - paginator&lt;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입니다.

    기본값: result

    코더 코더 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다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&lt;Model, NowDataError> 성공: 게시자가 디코딩 가능한 모델을 반환합니다.

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;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 재정의되지 않는 한 페이지네이터는 페이지당 20개 항목을 반환합니다. ACL 평가에 따라 페이지에서 가져온 실제 항목 수는 기본값 또는 구성된 값보다 적을 수 있습니다.
    표 33. 매개변수
    이름 유형 설명
    tableName 문자열 인시던트와 같은 기록을 검색할 테이블의 이름입니다.
    구성 FetchConfiguration 옵션입니다. 반환할 기록, 페이지 매김 페이지 크기 제한, 검색할 필드 및 필드에 포함할 항목을 정의하는 필터를 포함하여 검색된 기록에 적용할 구성입니다.

    기본값: nil - 모든 기록이 반환됩니다.

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

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Model: Decodable>(from tableName: String, path: String = Constants.resultPath, coder: Coder = .default, configuration: FetchConfiguration? = nil)

    중첩을 처리하는 디코딩된 모델의 페이지를 반복할 수 있는 페이지네이터를 작성합니다.

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

    기본값: result

    코더 코더 옵션입니다. 인스턴스와 주고 받는 데이터를 인코딩하거나 디코딩하는 데 사용할 코더입니다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. 반환
    유형 설명
    페이지네이터&lt;데이터> 성공: 페이징된 Decodable 모델을 포함하는 페이지네이터 객체입니다.

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • serverError(오류)
      • systemError(오류)

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

    이 예제에서는 디코딩된 사용자 모델을 제공하는 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) 비동기 throws

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

    publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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됩니다.

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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 - record(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration, completion: @escaping (Result&lt;Data, NowDataError>)

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

    필요한 경우 반환 결과를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator&lt;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(결과&lt;데이터, NowDataError>) 기록을 검색한 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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 - record(with sysId: SysID, from tableName: String, configuration: FieldReadConfiguration? = nil)

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

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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&lt;Data, NowDataError> 성공: 지정된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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) 비동기 throws

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

    Tthe publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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됩니다.

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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 - records(from tableName: String, configuration: FetchConfiguration? = nil, completion: @escaping (Result&lt;Data, NowDataError>))

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

    필요한 경우 반환 결과를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator&lt;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(결과&lt;데이터, NowDataError>) 기록을 검색한 후 실행할 완료 핸들러입니다.
    반환 값:
    • 성공: 데이터 - 요청된 기록
    • 오류: NowDataError
      • accessToken(AccessTokenProviderError)
        • AccessTokenProviderError: 액세스 토큰 공급자의 오류 코드 또는 메시지입니다.
          • accessTokenRetrievalFailed
          • userSessionError(_ 오류: 오류)

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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 구현을 사용해야 합니다.
    Tthe publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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&lt;Data, NowDataError> 성공: 지정된 기록을 포함하는 데이터 객체입니다.

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil) async throws

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

    표 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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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&lt;Model: SysIdentifiableModel>(_ model: Model, in tableName: String, coder: Coder = .default, writeOptions: FieldWriteOptions? = nil, configuration: FetchConfiguration? = nil, completion: @escaping (Result&lt;Model, NowDataError>))

    지정된 테이블에서 지정된 코드 가능 모델을 업데이트한 다음 처리기를 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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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&lt;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

    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

    표 54. 반환
    유형 설명
    AnyPublisher&lt;Model, NowDataError> 성공: 지정된 테이블에서 업데이트된 분류 가능 모델입니다.

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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, in tableName: String, withfields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil) 비동기 throws

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

    데이터를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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, in tableName: String, with fields: [FieldName: FieldValue], writeOptions: FieldWriteOptions? = nil, configuration: FieldReadConfiguration? = nil, completion: @escaping (Result&lt;Data, NowDataError>)

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

    필요한 경우 반환 결과를 사용자 지정 코드 가능 모델로 디코딩하거나 함수를 대신 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

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

      • attachmentValidation (첨부 파일 유효성 검사)

        첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

        요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

        JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

      • cannotDecodeProperty(유형: 임의, from: 문자열)
        • type: 문자열에서 디코딩하는 래핑된 형식입니다.
        • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

        코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

      • cannotParse응답

        인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

      • 유효하지 않은 URL

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

      • missingAttachmentMetadata

        첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

      • missingServiceConfiguration

        예상된 서비스 구성이 누락된 경우 throw됩니다.

      • missingSysID

        예상된 sys_id 매개 변수가 없을 때 throw됩니다.

      • 네트워크(NetworkServiceError)
        • genericError(문자열)
        • 운영취소됨
        • 서비스 비활성화됨
        • 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, configuration: FieldReadConfiguration? = nil)

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

    주:
    이 메서드는 더 이상 사용되지 않습니다. 대신 메서드의 async/await 구현을 사용해야 합니다.
    publisher는 사용자 지정 코드 가능 모델로 디코딩할 수 있는 데이터를 내보내거나 이 함수를 사용할 NowTableService - paginator&lt;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의 문자열 인시던트 등의 기록을 작성할 테이블의 이름입니다.
    write옵션 FieldWriteOptions 옵션입니다. 기록에 기록되는 데이터에 적용할 구성 옵션입니다.

    기본값: nil

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

    기본값: nil - 모든 기록이 반환됩니다.

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

    실패: NowDataError

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

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

    • attachmentValidation (첨부 파일 유효성 검사)

      첨부 파일이 유효성 검사에 실패할 때 throw됩니다.

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

      요청이 예기치 않은 응답을 반환할 때 throw됩니다

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

      JSON에서 코드 가능 모델을 디코딩할 수 없을 때 throw됩니다.

    • cannotDecodeProperty(유형: 임의, from: 문자열)
      • type: 문자열에서 디코딩하는 래핑된 형식입니다.
      • from: 지정된 형식으로 디코딩할 문자열입니다.

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

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

      코드 가능 모델을 JSON으로 인코딩할 수 없을 때 throw됩니다.

    • cannotParse응답

      인스턴스의 응답을 필요한 형식으로 구문 분석할 수 없을 때 throw됩니다.

    • 유효하지 않은 URL

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

    • missingAttachmentMetadata

      첨부 파일 메타데이터 헤더가 없을 때 throw됩니다.

    • missingServiceConfiguration

      예상된 서비스 구성이 누락된 경우 throw됩니다.

    • missingSysID

      예상된 sys_id 매개 변수가 없을 때 throw됩니다.

    • 네트워크(NetworkServiceError)
      • genericError(문자열)
      • 운영취소됨
      • 서비스 비활성화됨
      • 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)