回答
MVVM肯定不需要Reactive Cocoa。我已經構建了一個非常成功的MVVM框架,完全沒有任何綁定。綁定不是MVVM的要求。
具體來說,視圖模型和視圖之間的鏈接確實要求視圖模型向視圖發信號通知它需要更新其數據。這可以通過使用Reactive Cocoa,KVO(我非常喜歡Facebook的KVOController),甚至使用簡單的委託模式來實現。
視圖模型知道視圖何時需要更新 - 數據已更改,或者通過模型發出異步數據請求,並且該模型已加載到視圖模型中。
設置視圖時,可以將每個控件綁定到視圖模型上的對應值。我發現,當我需要製作屏幕時,這會變得非常乏味。相反,我寧願有一個方法,當視圖模型指示視圖應該自行更新時調用。在那個方法中,我只需要設置我所有的控件屬性。
現在,您只需要關心自己如何觸發該方法。在我的個人框架中,我利用KVO和ViewControllers監視ViewModel基類的timestamp屬性。任何時候,我的視圖模型都會更新其基礎數據,其更新時間戳會觸發更新。您可以輕鬆地將View Controller註冊爲ViewModel的更新委託並使用標準的委託模式。另外,MVVM不是關於具體的實現需求,更多的是關於高級關注點分離,依賴關係解耦和封裝的概念。
我已經做了一些測試上MVVMSwiftSample
我做了MVVM設計模式在斯威夫特POP與KVC方法。你可以檢查你是否喜歡它,這將是我在GitHub上的樂趣。
你什麼時候想創建/附加你的項目的另一半?數據收集似乎已經完成了一半...... – holex 2017-12-13 10:39:44
- 1. DASH示例實現
- 2. JCA示例實現
- 3. WebHook實現示例?
- 4. WPF MVVM Picklist示例
- 5. EntityList/EntityCollection - MVVM示例
- 6. MVVM Light Toolkit示例
- 7. System.Web.Mvc.IView.Render()的示例實現?
- 8. Baum-Welch的實現示例
- 9. 如何實現NFC示例?
- 10. 需要示例實現MessageHeaders.WriteHeaderContents
- 11. Ruby MLT實現/示例?
- 12. 無法實現從示例
- 13. AVFoundation示例方法實現?
- 14. MVVM光線程示例
- 15. WinRT MVVM Light示例項目
- 16. 尋找一個MVVM示例
- 17. WPF MVVM EF簡單示例
- 18. MVVM數據服務示例
- 19. MVVM示例不工作
- 20. MVVM應用程序序列化設計/實現示例
- 21. iOS:示例代碼或示例CGPDFContextAddDocumentMetadata
- 22. Lottie的iOS示例?
- 23. VB.net棱鏡MVVM在Silverlight中的示例
- 24. MVVM關閉標籤示例的任何代碼示例?
- 25. 在Alexa中實現SSML示例
- 26. 實例中的underscore.js _.memoize()示例?
- 27. phonegap ios示例config.xml
- 28. PhotoScroller示例iOS MaxZoom?
- 29. 標準庫中單例設計模式實現的示例
- 30. NUnit的工作ITestCaseProvider實現的示例?
你的問題是有趣的,但過於寬泛。你有什麼考慮?否則,你應該看看這兩篇博客文章:[Swift:使用MVVM處理可選項](http://natashatherobot.com/swift-mvvm-optionals/)和[MVVM簡介](http:// www.objc.io/issue-13/mvvm.html)。您也可以閱讀以下主題:[重寫Objective-C中的代碼以符合Swift電源工具和簡潔的風格](http://codereview.stackexchange.com/questions/62958/rewrite-code-from-objective-c-to -conform與 - 迅速,電力工具和簡潔-STYL)。 Rob Mayoff給出的優秀答案使用MVVM設置。 – 2014-10-03 23:57:02
GitHub上的另一個Swift MVVM示例[here](https://github.com/shilgapira/SwiftDemoMVVM)。 – 2014-10-04 13:41:42
如果您的系統可以幫助您進行數據綁定,那麼您只能採用MVVM。在iOS中,這幾乎肯定會成爲KVO機制。您需要這樣做才能避免爲每個媒體資源編寫自己的更改跟蹤代碼。 ReactiveCocoa是將KVO API與通知和異步數據流統一在一起的最成熟的項目,一旦學習結束後,它將非常強大。我建議不要試圖避免它,但實際上要擁抱它。 – fatuhoku 2014-11-15 09:22:26