通過MVVM進行iOS開發中,如何處理網路請求?

時間 2021-07-06 20:29:24

1樓:Martin Jack

首先明確一點: 沒有使用 ReactiveCocoa, 也可以實現 MVVM 架構方式.

分別解釋 MVVM 在 iOS 架構方式中的作用:

M: Model 層, 資料層, 這裡做一些對基礎實體的定義,資料的遠端獲取, 對本地資料的操作等

V: View 層, 檢視展示層, 有些人傾向於將 ViewController 也放在檢視展示層, 畢竟, 抽離之後, 在 ViewController 做的事情都轉移到了 ViewModel 中.

VM: ViewModel 層, 業務邏輯層, 這裡處理一切與 UI 狀態處理無關的業務處理.

問題1 網路請求怎麼處理? 將網路請求通過 ViewModelService 來實現(後續會講 ViewModelService), 將網路請求處理限定在資料層去處理, 而不是業務邏輯層(ViewModel 層.) 為什麼呢?

因為 ViewModel 層更加關心拿到對應的資料來做對應的顯示, 比如網路請求拿回了乙個實體資料, ViewModel 層直接執行對應的方法讓 View 重新繪製檢視既可以了.

問題 2 在使用了 ReactiveCocoa 中的網路請求, 或者是使用者操作中有錯誤出現, 應該怎麼處理? 這時推薦使用乙個熱訊號, 比如 RACSubject, 當有錯誤出現時, 對應的訊號訂閱者就能做出處理.

[注] 在 MVVM 模式的架構中, 應當轉變乙個觀念: 以 ViewModel 為輪轉中心, 在 MVC 中是以 ViewController 作為輪轉中心實現的. 如果按照之前以 ViewController 作為輪轉, 在 ViewModel 中是不可避免的匯入 UIKit 的內容, 因此, 有必要找到當 ViewModel 導航時, 通知 View 層中的 ViewController 實現對應的導航操作.

對應的 GitHub 鏈結這裡有: leichunfeng/MVVMReactiveCocoa

如何在 Windows 下進行 iOS 開發?

unwind 直接使用商業方案 基於蘋果開源cctools改造,包含發布工具,適合遊戲開發 iOS Build Environment for Windows by Pierre Marie Baty win10的Linux WSL 環境下以PE形式載入原生Mac O可執行檔案編譯執行工具鏈shin...

iOS 開發,NSDictionary 和 Model 哪個好?

精緻的developer 首先要從設計模式入手,現在主流的設計模式就是MVC,也有MVP,MVVM的,其實就是都是少不了建模的,建模的有點上面好多人也說了,對於有開發經驗的人來說,好處更是不言而喻.至於說贊成用NSDictionary的,我只能說. 盛夏光年 混用吧,一般資料比較規範的,如使用者資料...

iOS開發出現報錯 Command bin sh failed with exit code 1

菜夫 Unknown option p Type shasum h for help Unknown option p Type shasum h for help Unpacking Users bubu Library Caches com.facebook.ReactNativeBuild d...