[swift] Observable의 여러 이벤트 타입과 활용 방법

Observable은 RxSwift에서 사용되는 중요한 개념입니다. Observable은 데이터 스트림을 생성하고, 변경사항에 대한 이벤트를 전달하는 역할을 합니다. 이번 포스트에서는 Observable에서 제공되는 여러 이벤트 타입과 활용 방법에 대해 살펴보겠습니다.

1. Next 이벤트

Observable은 Next 이벤트를 통해 새로운 데이터를 방출합니다. Next 이벤트는 데이터 스트림의 중요한 구성요소이며, 이벤트 핸들러에서 새로운 데이터를 처리하는 데 사용됩니다. 예를 들어, 다음과 같이 Observable을 생성하고 Next 이벤트를 처리할 수 있습니다.

let observable = Observable<String>.create { observer in
    observer.onNext("Hello, World!")
    return Disposables.create()
}

observable.subscribe(onNext: { value in
    print(value)
}).disposed(by: disposeBag)

위의 코드에서는 “Hello, World!” 문자열을 Next 이벤트로 방출하는 Observable을 생성한 후, 이를 구독하여 값을 출력하고 있습니다.

2. Error 이벤트

Observable은 Error 이벤트를 통해 에러를 전달할 수도 있습니다. Error 이벤트는 데이터 스트림에서 예외적인 상황이 발생했을 때 사용됩니다. 예를 들어, 다음과 같이 Observable에서 Error 이벤트를 방출하는 경우를 살펴보겠습니다.

enum CustomError: Error {
    case generic
}

let observable = Observable<String>.create { observer in
    observer.onError(CustomError.generic)
    return Disposables.create()
}

observable.subscribe(onError: { error in
    print("Error: \(error)")
}).disposed(by: disposeBag)

위의 코드에서는 CustomError 타입의 에러를 발생시키고 있습니다. Observable을 구독하여 Error 이벤트가 발생하면 해당 에러를 처리하고 있습니다.

3. Completed 이벤트

Observable은 Completed 이벤트를 통해 데이터의 스트림이 완료되었음을 알릴 수 있습니다. Completed 이벤트는 데이터 이벤트의 종료를 의미하며, 더 이상의 데이터가 방출되지 않음을 나타냅니다. 예를 들어, 다음과 같이 Observable에서 Completed 이벤트를 방출하는 경우를 살펴보겠습니다.

let observable = Observable<String>.create { observer in
    observer.onNext("Hello, World!")
    observer.onCompleted()
    return Disposables.create()
}

observable.subscribe(onNext: { value in
    print(value)
}, onCompleted: {
    print("Completed")
}).disposed(by: disposeBag)

위의 코드에서는 Observable에서 “Hello, World!” 문자열을 방출한 후, Completed 이벤트를 방출하고 있습니다. Observable을 구독하여 값들을 출력한 후, Completed 이벤트가 발생하면 “Completed” 메시지를 출력합니다.

이렇듯 Observable은 Next, Error, Completed 이벤트를 통해 데이터 스트림의 변경사항을 처리할 수 있습니다. 이러한 이벤트를 적절히 활용하여 RxSwift를 더욱 효과적으로 사용할 수 있습니다.

참고 자료