iOS專案開發MVVM架構實踐(第三篇:應用佈局)
有了前面兩篇的基礎,我們通過具體的例子來說明這個架構是怎麼佈局的,然後我們一步步的實現它們。接下來,我們一大家熟悉的使用者登入來做介紹,比如我們有這樣的一個登入介面,下圖:
需求有,那就讓我們動手去實現它的整個流程:
第一步:用xcode打我們的專案,新建一個framework(File->New->Target->Cocoa Touch Framework),命名為Services,匯入NetworkAPI的framework以及其他用使用的第三方framework,首先,先定義login介面的Router,如下:
接著,實現登入的service方法,新建一個AccountServices的檔案,具體如下:
由於,我們需要把用登入資料本地化,這邊使用sugarrecord(具體使用檢視GitHub)來簡化coredata資料的儲存,User(Model,跟建services framework的方式一樣)的定義如下:
同時,使用了ObjectMapper把JSON轉化為Model(User),具體使用方法這邊就不做介紹,請檢視GitHub文件。
第二步,從第一步我們實現這個架構的Services層和Model層,接下來我們要實現就是為View層提供可監聽的屬性(Property)與可執行的動作(Action)的ViewModel層,跟前面類似新建一個ViewModel的framework,具體如下:
主要有兩個檔案,分別為ViewModelBase.Swift和LoginViewModel.swift,我們整個使用者登入邏輯到這邊基本都實現了,就差怎麼運用View層,由於,整個登入介面是用程式碼寫的,使用到UITableView, 使用者輸入的值是通過delegate傳出來的,所以這邊使用Action傳入輸入引數的方式實現,如果使用storyboard畫介面的,可以考慮屬性繫結的方式,ViewModel的就應該這麼寫了,如下:
繫結,其實很簡單,類似如下圖所示:
最後一步,也就是View層,不管是用程式碼寫的介面,還是storyboard畫的介面,上面的兩種ViewModel的實現都可以用,主要看那種使用其他比較方便,要做的事情比較就好了。我這邊運用的是第一種,是由於比較適合我運用場景,大致的程式碼如下:
到此,整個架構的佈局就完成了,大致可以歸為:Model -> Services -> ViewModel -> View,我們這邊在Model與ViewModel之間插入一個Services層,主要是為了分離呼叫API邏輯實現的部分,減少ViewModel的負擔,讓其看起來比較輕量級。
就到此了!
相關文章
- iOS 開發(三) MVVM 架構篇iOSMVVM架構
- iOS應用千萬級架構:MVVM框架iOS架構MVVM框架
- iOS VIPER架構實踐(一):從MVC到MVVM到VIPERiOS架構MVCMVVM
- web 應用開發最佳實踐之一:避免大型、複雜的佈局和佈局抖動Web
- Flutter 應用程式佈局的最佳實踐Flutter
- Android應用架構的發展和實踐Android應用架構
- iOS架構實踐乾貨:AOP替代基類 + MVVM + ReactiveObjC + JLRoutes元件化iOS架構MVVMReactOBJ元件化
- iOS應用千萬級架構開篇iOS架構
- iOS應用架構談(1):開篇iOS應用架構
- MVVM架構在Flutter中的簡單實踐MVVM架構Flutter
- MVVM架構的一次實踐,重寫iOS頭條客戶端MVVM架構iOS客戶端
- iOS架構由淺入深 | MVVMiOS架構MVVM
- iOS 架構模式–解密 MVC,MVP,MVVM以及VIPER架構iOS架構模式解密MVCMVPMVVM
- [譯] 使用 Architecture Components 開發 MVVM 應用:MVP 開發者的實踐指南MVVMMVP
- Swift + RxSwift MVVM 模組化專案實踐SwiftMVVM
- .NET雲原生應用實踐(一):從搭建專案框架結構開始框架
- 實戰指南 | Serverless 架構下的應用開發Server架構
- 前端響應式佈局原理與實踐前端
- Flutter應用的Clean架構示例專案Flutter架構
- COLA 4.0應用架構和DDD經典專案實踐:貨物運輸系統應用架構
- HarmonyOS NEXT應用開發—驗證碼佈局
- 用 VIPER 構建 iOS 應用架構(2)iOS應用架構
- Google 官方應用架構的最佳實踐指南Go應用架構
- [開發教程]第9講:Bootstrap響應式佈局的實用類boot
- Flutter與Native混合開發-FlutterBoost整合應用和開發實踐(iOS)FlutteriOS
- 移動 WEB 開發的佈局方式 ---- 響應式佈局Web
- Android應用開發架構概述Android架構
- 淺談設計模式在iOS開發實戰專案中的應用設計模式iOS
- 阿里DDD專案最佳實踐-COLA 架構總覽阿里架構
- TRIZ在專利佈局中的應用
- Flex佈局應用Flex
- 深度剖析——超融合架構應用與實踐分享架構
- iOS 應用架構現狀分析iOS應用架構
- iOS MVC、MVVM、MVP架構模式淺淺析iOSMVCMVVMMVP架構模式
- iOS架構淺談從 MVC、MVP 到 MVVMiOS架構MVCMVPMVVM
- iOS開發-MVP架構模式iOSMVP架構模式
- [分享]iOS開發 - iOS自動佈局的替換方案iOS
- WebKit網頁佈局實現之主要架構篇WebKit網頁架構