view controller에서 input parameter 받기란 무엇일까요?

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • Matthew So
      참가자
      • 글작성 : 2
      • 답글작성 : 3

      안녕하세요. 항상 많은 도움 받고 있습니다. 감사합니다.

      현재 iOS 프로젝트 숙제를 하고 있는데요, 비지니스 로직 중 하나가 view controller에서 특정 object(json)를 input parameter로 받는 것입니다.

      제가 개발 경험이 길진 않지만, view controller에서 input parameter를 받는 패턴은 좀 낯설게 느껴집니다.  제 생각은, 아래와 같이 custom init을 만들고 controller를 instantiate할 때 값을 받아오는 것 같은데, 이게 맞는지 잘 확신이 잘 서지 않습니다. 그리고 저는 이 controller를 scene delegate(혹은 app delegate)에서 열고 싶은데 그렇다면 저 값은(input parameter) 어떻게 넣어줘야 할까요? MVVM패턴을 쓰고 있는데 scene delegate에 view model을 넣어주는 건 잘못 된 걸로 생각이 되서요. 제 접근이 완전히 틀릴 수도 있으니 어떤 조언이든 주시면 감사히 받겠습니다.

      init(id: String) {

      super.init(nibName: nil, bundle: nil)
      }

      required init?(coder: NSCoder) {
      fatalError(“init(coder:) has not been implemented”)
      }

      override func viewDidLoad() {
      super.viewDidLoad()
      setupUI()
      }

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

      정확히 문제가 어떤 의도인지는 모르겠으나, 말씀하신 방법처럼 이니셜라이저를 만들어서 전달해주셔도 됩니다.
      scene delegate에서 view model을 넣어주는 것이 어떤의미인지는 모르겠습니다. 다만 scene delegate가 view model이 아니라 scene delegate에서 view model을 다루는 것이 문제가 되는 것이냐고 말씀하신 거라면 scene delegate의 역할을 어떻게 구분지었는지에 따라, 서로 결합도를 어디까지 생각했느냐에 따라 다를 것 같습니다. 개인적으로 디자인 패턴에서 정답이란 것은 없다고 생각해요.

      또, 첫 번째 질문에 대해서는 ios view controller dependency injection에 대해 검색해보시면 좀 더 힌트를 얻을 수 있지 않을까합니다.

      • Matthew So
        참가자
        • 글작성 : 2
        • 답글작성 : 3

        야곰님 항상 친절한 답변 감사합니다! 네 말씀하신대로 SceneDelegate 자체가 view model은 아니고 거기에 view model을 놓고자 합니다. 패턴에 정답 없다는 말씀도 참 와닿아요! 그렇지만 과제에는 mvvm & rx를 사용하길 원해서 간신히 protocol사용에 조금 익숙해진 저에게는 또다른 벅찬 개념이네요. 여튼 좀 더 공부해 봐야겠습니다. 자주 올게요!:)

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

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