[iOS] NotificationCenter를 Rx를 이용해서 간단하게 만들어보자

kimdocs...📄·2023년 3월 20일
0

iOS

목록 보기
10/22
post-thumbnail

NotificationCenterHandler 정의

import Foundation
import RxSwift

protocol NotificationCenterHandler {
    var name: Notification.Name { get }
}

extension NotificationCenterHandler {
    func addObserver() -> Observable<Any?> {
        return NotificationCenter.default.rx.notification(name).map { $0.object }
    }

    func post(object: Any? = nil) {
        NotificationCenter.default.post(name: name, object: object, userInfo: nil)
    }
}

extension으로 addObserver와 post를 구현해준다.

NotificationCenterManager 구현

import Foundation
import UIKit

enum NotificationCenterManager: NotificationCenterHandler {
    case reloadProfile

    var name: Notification.Name {
        switch self {
        case .reloadProfile:
            return Notification.Name("NotificationCenterManager.reloadProfile")
        }
    }
}

enum 으로 상속받으면 더 효율적임!

사용법

post 하는 쪽

NotificationCenterManager.reloadProfile.post()

addObserver 하는 쪽

NotificationCenterManager.reloadProfile.addObserver() 를 작성해주고
subscribe 혹은 observable chaining으로 연결해주면 된다!
observable chaining으로 스트림 연결해서 빼줄 때 넘 유용한듯!

요론식으로!

profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글