通過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

Web 前端開發需要使用 MVVM 框架嗎?

south 都在說mvvm 這東西看起來很美好實際沒什麼用處 技術不行的人,無非是從乙個坑爬到另外乙個坑。系統技術越簡單越好,最好能有乙個demo,用mvvm做的,我來用簡單技術完成,比較一下即可。都是一些人云亦云的人 像MVC這種框架體現了很多設計模式,什麼是設計模式,就是前人總結的一些方法,他們...

iOS遊戲開發流程?

以下就是晚上失眠了,想到哪寫到哪,所以很亂 做3d手遊還是建議用U3d。不過其實cocos2d x也是可以做3d手遊的,免費而且開源。只是,cocos2d x的3d部分不夠完善。去年大概11月份的時候我就碰到個坑,它竟然沒有獲得點沿過點的射線到平面距離的函式 缺少這個基本的函式就直接導致了,如果空間...

iOS 開發怎麼入門?

IOS開發新手入門經典指南 王者打靶 小遊戲 讓IOS應用支援橫屏 新增其他控制項 Label Button Slider 如何更新滑動條的值到對話方塊中 如何使用viewDidLoad 按照從上到下的順序閱讀。pan.baidu.com s 1o7PkQfS 密碼 0na2 Origheart 題...