2017-03-06 4 views
0

저는 iOS를 개발하기 위해 mvc 디자인 패턴을 사용해 왔으며, 제가이 일을 제대로하고 있는지 궁금합니다. MVC에 대해 많이 읽었습니다. 개념 상 표시되거나 뷰의 특성을 변경할 모든 정보가 내 vc의 '지식'과 같이 모델에 저장됩니다. 따라서 MVC를 설계 할 때 일반적으로 사용자가 상호 작용하는 각보기에 대한 mvc를 만들고 App의 모든 '공유 된'정보를 관리하는 모델 객체와 'UserSession'클래스를 유지하기위한 하나의 싱글 톤을 사용합니다. 예 :MVC 디자인 패턴 - 모델 디자인

내 HomeViewController에서 내 개체의 상태에 따라 다른 하위 뷰가 있으므로이 MVC (집)에서 내 homeSubview 형식과 해당 데이터를 제어하는 ​​모델로 '발표자'를 갖게되었습니다. 내가 다른 모델 객체 (사용자 또는 객체와 같은)에서 정보를 검색 할 필요가있을 때 (이 경우) 트릭을 수행하는 '발표자 모델'이되며 프로젝트 내부의 다른 MVC에서도 마찬가지입니다.

컨트롤러가 나에게 좋아 보인다 다음

그래서보기 [을 업데이트] 컨트롤러 [에 '응답'] (필요한 경우 다른 모델과 통신) 모델, [에 질문] : 내 방법이 무엇인가이다 ,하지만 난 mvc 패턴을 올바르게 사용하지 않는 것처럼 떨어졌다. 누군가 의견을 줄 수 있습니까?

사전 : 영어에 대해 미안. 그리고 나는 어떤 제안/도움을 주셔서 감사합니다, 감사합니다!

답변

1

MVC보다는 MVVM (C) 패턴처럼 들리지만 나는 당신이 제안하는 것에는 이상한 것을 보지 못합니다.

그래서 아이폰 OS에서 우리는 거의 뷰 컨트롤러를 사용하도록 강요, 그래서 우리는 본질적으로 추가 여기 (C), 그러나 필요

  • M (모델), 이러한 데이터 모델을 대표한다. class Model { var firstName: String var lastName: String .... }
  • V (보기),이 데이터 를 화면에 그리기 및 표시, 프리젠 테이션을 처리해야 class View: UIView { let fullNameLabel = UILabel() }
  • VM (보기 모델) 당신은 무엇보기의 요구에 맞게 모델의 데이터를 적응 곳이있다 . 동일한 모델 클래스의 데이터를 표시하는 뷰가 여러 개있는 경우 새 뷰 모델을 추가하기 만하면 도우미 메서드를 많이 사용하여 모델을 혼란스럽게하지 않고 원하는 데이터를 적용하면됩니다. class ViewModel { let model: Model func fullName() -> String { return "(model.firstName) (model.lastName)" } }

그리고 분명히 우리는이 당신의 presenter 뷰 모델입니다 당신이 무엇을하고 있는지 더처럼 나에게 모든 것을 :

느낀다을 조율 컨트롤러를 가지고있다.

이렇게하면보기 또는 모델에 실제로 속하지 않는 기능을 캡슐화하는 데 도움이됩니다. 전체 이름은 기술적으로 데이터 모델의 일부가 아니며 렌더링/프리젠 테이션도 수행 할 수 없으므로 어댑터/발표자 /보기 모델로 이동합니다.

어쩌면 이것은 당신에게 도움이 될 것입니까? 더 이상 피드백이 필요하거나 더 궁금한 점이 있으시면 언제든지 다른 정보에 대한 코드 예제를 포함하십시오.

+0

다시 한번 감사드립니다! 사실 나는 독사 디자인을 더 얻고있다. 그리고 나는 나중에 만 바이퍼를 만난다 .. https://www.objc.io/issues/13-architecture/viper/ 그러나 나는 강철로 mvc를 유지하려고 노력하고있다. .. – Gehlen