안녕하세요, ReactiveCocoa를 사용하지 않고 iOS 앱에서 MVVM 패턴을 구현 한 사용자가 있습니까?iOS에서 MVVM 샘플/예제 구현
많은 예제가 있지만 여기에는 모두 Reactive Cocoa가 사용됩니다. MVVM 구현의 간단한 예제가 필요했습니다.
안녕하세요, ReactiveCocoa를 사용하지 않고 iOS 앱에서 MVVM 패턴을 구현 한 사용자가 있습니까?iOS에서 MVVM 샘플/예제 구현
많은 예제가 있지만 여기에는 모두 Reactive Cocoa가 사용됩니다. MVVM 구현의 간단한 예제가 필요했습니다.
반응성 코코아는 MVVM에 반드시 필요하지 않습니다. 모든 바인딩을 사용하지 않고 매우 성공적인 MVVM 프레임 워크를 구축했습니다. 바인딩은 MVVM의 요구 사항이 아닙니다.
특히보기 모델과보기 사이의 연결은보기 모델이보기에 신호를 보내 데이터를 업데이트해야 함을 나타냅니다. 이는 Reactive Cocoa, KVO (나는 Facebook의 KVOController가 정말 좋음)를 사용하거나 단순한 대리자 패턴을 사용하여 달성 할 수 있습니다.
뷰 모델은 데이터가 변경되거나 모델을 통해 비동기 데이터 요청을하고 뷰 모델에 모델을로드 한 경우 뷰를 업데이트해야 할시기를 알고 있습니다.
보기를 설정할 때 각 컨트롤을보기 모델의 해당 값에 바인딩 할 수 있습니다. 나는 스크린을 벗겨 내야 할 때 매우 지루할 수 있음을 알았다. 대신 뷰 모델 자체가 뷰를 업데이트해야한다고 신호를 보낼 때 호출되는 단일 메서드가 있습니다. 이 메서드 내에서 모든 컨트롤 속성을 설정하기 만하면됩니다.
이제는 해당 메소드가 실행되는 방법에 대해서만 신경 써야합니다. 필자 개인적인 프레임 워크에서는 KVO를 활용하고 ViewController는 ViewModel 기본 클래스의 타임 스탬프 속성을 모니터링합니다. 내 뷰 모델이 기본 데이터를 업데이트 할 때마다 해당 타임 스탬프가 업데이트되어 업데이트가 트리거됩니다. View Controller를 ViewModel의 업데이트 대리자로 쉽게 등록하고 표준 대리자 패턴을 사용할 수 있습니다.
MVVM은 특정 구현 요구 사항에 관한 것이 아니고 상위 수준의 개념 분리, 종속성 분리 및 캡슐화에 관한 것입니다.
은 내가 KVC의 접근 방식 스위프트 POP에 MVVM 디자인 패턴 만든 그 MVVMSwiftSample
에 대한 몇 가지 테스트를 수행했다. 당신은 GitHub에 내 기쁨이 될거야 당신이 이것을 사랑하는지 확인할 수 있습니다. 코딩
나는 MVVM을 사용하여 간단한 프로젝트를 만들었습니다
모델 - 뷰 - 뷰 모델를 Github의 링크 아래에 확인하시기 바랍니다 :
언제 프로젝트의 나머지 절반을 만들거나 첨부하고 싶습니까? 데이터 바인딩은 반쯤 완료된 것 같습니다 ... – holex
귀하의 질문이 재미 있지만 너무 광범위하다. 너는 무엇을 염두에두고 있니? 그렇지 않으면 [Swift : MVVM을 사용하여 선택 항목 작업하기] (http://natashatherobot.com/swift-mvvm-optionals/) 및 [MVVM 소개] (http : // www.objc.io/issue-13/mvvm.html). 또한이 스레드를 읽을 수 있습니다 : [신속한 전동 공구 및 간결한 스타일에 맞게 Objective-C 코드 다시 작성] (http://codereview.stackexchange.com/questions/62958/rewrite-code-from-objective-c-to -conform-with-swift-power-tools-and-concise-styl)를 사용합니다. Rob Mayoff가 제공 한 훌륭한 대답은 MVVM 설정을 사용합니다. –
GitHub [여기] (https://github.com/shilgapira/SwiftDemoMVVM)의 또 다른 Swift MVVM 예제입니다. –
데이터 바인딩에 도움이되는 시스템을 가지고있는 경우에만 MVVM을 사용할 수 있습니다.iOS에서는 거의 확실하게 KVO 메커니즘이 될 것입니다. 모든 속성에 대해 자체 변경 추적 코드를 작성하지 않으려면이 기능이 필요합니다. ReactiveCocoa는 통지 및 비동기 스트림과 함께 KVO API를 통합하는 가장 성숙한 프로젝트로, 학습 과정을 끝내면 매우 강력합니다. 나는 그것을 피하려고 애 쓰지 않을 것이지만 실제로 그것을 받아들이라고 충고합니다. – fatuhoku