combine 관련 질문입니다.

태그: 

2 답변 글타래를 보이고 있습니다
  • 글쓴이
    • c00012
      참가자
      • 글작성 : 16
      • 답글작성 : 4

      앱 개발에 MVVM을 적용하려다가 내친 김에 combine까지 왔습니다. 

      책을 구해서 실습하고 있는데 질문이 생겼습니다. 

      다음의 코드를 playground상에서 실행했는데 예상한 결과가 안 나오는군요.

      //관련함수

      public func example(of description: String,

                          action: () -> Void) {

        print(“\n——— Example of:”, description, “———”)

        action()

      }

      //실행코드

      example(of: “Subscriber”) {

      let myNotification = Notification.Name(“MyNotification”)

      let publisher = NotificationCenter.default.publisher(for: myNotification, object: nil)

      let center = NotificationCenter.default

      let subscription = publisher.sink { _ in print(“Notification received from a publisher!”)}

      위의 코드를 돌리면

      ——— Example of: Publisher ———

      Notification received from a publisher!

      이렇게 나와야 하는데 

      ——— Example of: Publisher ———

      만 나옵니다…

      뭐가 틀렸는지 머리가 뒤죽박죽이 되어서 잡아내기가 쉽지 않네요. 여러분들의 조언을 기다립니다…
      <p style=”text-align: right;”>}</p>

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      해당 내용을 플레이그라운드가 아니라 다른 프로젝트 템플릿을 활용하여 해보시면 좋을듯합니다.

      Xcode > File > New > Project > macOS > Command Line Tool

      템플릿 활용하여 해보세요

    • c00012
      참가자
      • 글작성 : 16
      • 답글작성 : 4

      command-line tool로 해봤는데 결과는 마찬가지였습니다.

      그리고 다른 예제와 비교해서 원인을 찾았습니다.

      center에 post가 안되어 있으니 당연히 메시지가 안 나올수밖에 없더군요.

      그래서 아래 라인을 추가해서 해결했습니다.

       center.post(name: myNotification, object: nil)

      • 이 답변은 c00012에 의해 2 months, 1 week 전에 수정됐습니다.
2 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom