본문 바로가기

iOS_RxSwift

return Single<> 비동기 처리

화면에서 네트워크 요청 등으로 비동기처리를 해야 하는 경우 공통함수 뼈대를 정리해놓는다.

ruturn type이 바뀐다면 Single<String> 이런식으로 Generic 으로 리턴타입을 명시한다.

화면에서 Observable(?) 하게 가져다 쓸 수 있다.

 

func returnSingle() -> Single<Void> {
  return Single.create { observer in
    if true {
      observer(.success(Void()))
    } else {
      observer(.error(CustomedError(message: "Swift Error 객체 → Error프로토콜을 준수함", status: -1)))
    }
    return Disposables.create {}
  }
}

추후에 받는곳에서 이런식으로 받아서 처리!!

 

subscribe(onNext: {
  // observer(.success(type)) 여기로
}, onError: {
  // observer(.error(Error object) 여기로
})

observer(.error(Error Object)) 의 Swift Error 객체의 예시 샘플을 정리해놓는다.

추가적으로 내부 API 요청(각 개발 내부 사이트) 에러시 서버에서 내려주는 공통 에러도 이것으로 받을 수 있도록

Codable Protocol 을 통해 커스텀 에러를 공통으로 빼내는 방식도 추후에 정리할 예정이다.

 

/*
 커스텀 에러 모델 예시 Error 상속!
 */
struct CustomedError: Error {
  let status: Int
  let message: String
  var resCode: String?

  init(message: String, status: Int, resCode: String? = nil) {
    self.message = message
    self.status = status
    self.resCode = resCode
  }
}