項目的開始我們必然要面臨一些準備工作來做統籌布局(如: 網絡API的封裝、數據處理與UI布局的選擇等等),我們這邊選擇的是Alamofire、ObjectMapper、AlamofireObjectMapper、ReactiveCocoa作為MVVM分層架構的現實:
創新互聯專注于永春企業網站建設,成都響應式網站建設公司,商城開發。永春網站建設公司,為永春等地區提供建站服務。全流程按需求定制網站,專業設計,全程項目跟蹤,創新互聯專業和態度為您提供的服務
1)運用ObjectMapper達到數據之間的相互轉化;
2)結合Alamofire、ObjectMapper、AlamofireObjectMapper與ReactiveCocoa封裝網絡接口讓數據可傳遞、可監聽,為調用API接口服務。
3)通過viewmodel的屬性(Property)和動作(Action)給view層提供必要的數據和執行的動作。
上面大致介紹了整個架構的現實原理,接下來我們要介紹的網絡接口封裝的第一步Router協議的實現。Router協議作為網絡層現實的一部分,目的就是把API地址轉化為更加容易理解的Router名稱供其他地方使用,如:
這就是一個登錄API的現實,RouterConvertible 就是我們所要現實的router協議,我們要讓router協議具備網絡請求的必要屬性,實現如下:
從實際上考慮除了urlPath需要外部提供,headers和paramters是可選的,method和parameterEncoding可以給與默認值,在需要的時候在作調整,那么如何讓這個協議現實這樣的功能呢?
swift為我們提供了協議擴展,讓我們輕松現實這樣的功能,如下:
綜上所述,我們的Router協議的實現已大功告成!
主項目中的分層主要包含四個模塊,Main(主要)、Expand(擴展)、Resource(資源)、Vender(第三方),還有本項目是有多個Tag,用于區分不同的版本,比如本地環境測試版、產品版,主要是通過Tag來區分,不同的標識對應不同的連接地址;當然也可以設置其它不同的內容;
2.1 Main(主要)模塊的內容
此模塊主要目的是為了存放項目的頁面內容,比如MVC的內容,Base(基類)用于存放一些公共的內容,其它功能模塊的提取,方便繼承調用;在本實例中已經在BaseController整理的一個公用的ViewController
2.2 Expand(擴展)模塊的內容
此模塊主要包含 Const、Macros、Tool、NetWork、Category、DataBase六個子模塊;
2.2.1 Macros (宏) 主要存放宏定義的地方,這邊有兩個宏文件,Macros.h主要是項目的一些主要宏,比如字體、版本、色值等,而ThirdMacros.h主要用于存放一些第三放SDK的key值;
2.2.2 Tool(工具類)主要存放一些常用的類,此處Logger用于存放日志的封裝幫助類,Reachability用于存放判斷網絡狀態的幫助類;
2.2.3 Network(網絡)這邊主要用到YTKNetwork 是猿題庫 iOS 研發團隊基于 AFNetworking 封裝的 iOS 網絡庫,這邊是對它進行一些修改,為了滿足不同Tag及不同的功能模塊可能訪問不同URL的要求;
2.2.4 Category(分類)主要用到Git上面iOS-Categories分類的內容,多創建一個Other用于存放平時要擴展的分類;
2.3 Resource(資源)模塊的內容
資源模塊主要包含三方面,Global( 全局 )、Image( 圖片 )、Plist( 配置文件 );
2.3.1 Global用于存放項目一些全局的內容,包含啟動項的內容LaunchScreen.storyboard、頭部引用PrefixHeader.pch、語言包File.strings
2.3.2 Image用于存放圖片資源,可以根據功能模塊進行再分不同的xcassets文件;
2.3.3 Plist用于存放plist文件,主要是本項目中會創建多個的Tag,而每個Tag都會有自個的plist文件進行管理,所以統一存放方便管理;
2.4 Vender(第三方)模塊的內容
雖然項目中已經用Pod來管理第三方插件,但對于一些可能要進行修改的第三方可以存放在這邊,本實例中引用的幾個比較常用的第三方插件,簡單介紹其中的幾個,GVUserDefaults是對UserDefaults的封裝,簡單就可以用于存取操作;JDStatusBarNotification是在狀態欄提示效果的插件;ActionSheetPicker底部彈出如時間選擇、選項的插件;QBImagePickerController是照片選擇插件,支持多選并可以設置最多選擇張數;
上一篇我們說到組件化開發是一個App最大一層的架構,那具體到了一個一個的業務組件里,比組件化開發小一點的架構就是三層架構。所謂三層架構就是指把項目中所有的類劃分到不同的層,目的是使項目邏輯更加清晰,提升開發和維護的效率,我們一般會把項目分為三層:數據層、業務層、視圖層。
注意:嚴格來講,三層架構并不真正就比組件化開發小,它們倆只是從不同的角度去做架構而已,往往是相互融合的,比如組件化開發里網絡庫就是三層架構里數據層的內容,UI庫就是三層架構里視圖層里的內容等,這里之所以說“三層架構是比組件化開發小一點的架構,主要是針對業務組件來說的”,當然甚至我們在不使用組件化開發時項目里依然可以使用三層架構。
比三層架構再小一點的架構就是視圖層架構,我們常說的MVC、MVVM都是?視圖層的架構。
MVC,即Model-View-Controller,它們的關系如下:
MVVM,即Model-View-ViewModel,它們的關系如下:
新聞名稱:ios開發架構,ios開發架構Linux
當前鏈接:http://vcdvsql.cn/article34/dsdgdpe.html
成都網站建設公司_創新互聯,為您提供網站制作、域名注冊、Google、自適應網站、靜態網站、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯