你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 通用的MVC模式項目框架MobileProject

通用的MVC模式項目框架MobileProject

編輯:IOS開發基礎

1.jpg

本文為投稿文章,作者:踏浪帥


最近項目比較不趕的情況下,決定把一些通用、常用的內容集成在一個項目框架中,意在新項目中可以快速搭建;其實經過幾個項目後,總是有一些重復的創建工作,可以使用本項目的內容直接進行開發;采用的是MVC的分層模式,本文將會重點介紹關於層級的劃分及一些已經集成的第三方功能介紹;當然本項目的源代碼已經上傳到gitHub(地址:https://github.com/wujunyang/MobileProject)上面,

當然要是對你有幫助記得給個星,假如大家有時間也可以一起完善,或者有什麼問題也可以及時留言;

本項目是在XCode7上面創建,若您的XCode版本是在7以下,可以把代碼中幾處7的特性進行刪除,就可以正常運行本程序;本項目運用Pods進行部分第三方插件管理,對於Pods的知識不是本文的重點,若不了解可以在網絡上進行搜索;項目中采用兩個Targets來區分產品環境跟測試環境,然後在網絡交互時設置不同的連接地址,假如有多個不同地區的版本也是通過不同的Targets進行配置,通過Targets的標識區分出一些差異化,項目的層級劃分是按現在比較常用的,若您有更好的意見歡迎提出來,會及時更新到項目中;項目的框架也會不斷更新跟集成新的內容進去。

1整體項目.png

A 整體框架

工程MobileProject為主項目,Pods是自動管理部分第三方插件的工程;在MobileProject工程中對項目進行劃分成Main、Expand、Resource、Vender、SDKFile、Supporting Files六個部分;

一、Main(主要):主要存放關於MVC的內容文件,子級為每個大功能模塊的內容;目前MobileProject已經默認創建幾個,包含Logger(日志)、Preview(預演)、Home(首頁)、Public(公共)、Base(基類)、Login(登錄);

2Main.png

1.1.1 Preview用於存放一些練習的功能頁面,本項目集成一些第三插件實例或者實例代碼都會放在裡面;

1.1.2 Public主要是為了考慮一些可能每個功能模塊都會包含的內容,就可以放在此處;在每個大的功能模塊中都包括以下幾部,分別為Model、View、Controller、Other;此處又把View級進行拆分出SubView及Cell;SubView意在存放一些子視圖,而Cell則是為了存放一些表格行;這部分可以根據每個不同的項目創建出不同的子級;

1.1.3 Base用於存放一些抽離提取或以共用的可被繼承的內容;

二、Expand(擴展):主要存放一些常用的幫助類及擴展類,此級又分為Const(常量)、Macros(宏)、Tool(工具類)、Network(網絡)、Category(分類)、DataBase(數據庫)六個部分;

3Expand.png

1.2.1 其中Macros裡面又分出兩個文件Macros.h、ThirdMacros.h,第一個是存放一些項用常用的宏,例如如屏幕大小、字體等;而第二個意在存放一些第三方的SDK要使用的Key值,例如友盟、百度地圖等。

1.2.2 Tool目前存放著一些提取的幫助管理類,例如UmengHelper(友盟管理)、LcationManager(定位管理)、Logger(日志記錄)、Reachability(網絡狀態)等。

1.2.3 Network目前是運用猿題庫封裝AFNetworking使用的YTKNetwork源代碼,本項目對它進行一些微調,讓它適用於項目中多個Targets對應不同的請求地址,若要修改API地址在NetWorkBaseUrlConfig類裡面,網絡請求地址目前又分為邏輯訪問前綴地址、圖片加載的地址、升級APP的請求地址、登錄的請求地址;然後在MVC層裡面的API請求時再根據SERVERCENTER_TYPE來區分加載是哪一種前綴地址;項目中登錄模塊已經有一個實例代碼。

1.2.4 Category為Git上面iOS-Categories分類的內容,多創建一個Other用於存放平時要擴展的分類;常用的擴展類其實大多已經包含在裡面。

1.2.5 DataBase意在存儲一些項目要用到的初始化數據,當然包含各種類型的文件都可以存放在這。

三、Resource(資源)主要存分三個部分的內容,包含Global(全局)、Image(圖片資源)、Plist(配置)三部分;此部分的內容也比較單一,Global用於存放項目一些全局的內容,包含啟動項的內容LaunchScreen.storyboard、頭部引用PrefixHeader.pch、語言包File.strings; Image用於存放圖片資源,可以根據功能模塊進行再分不同的xcassets文件;Plist用於存放plist文件,主要是本項目中會創建多個的Tag,而每個Tag都會有自個的plist文件進行管理,所以統一存放方便管理;

4Resource.png

四、Vender(第三方)存放一些可能被修改的第三方插件及一些自個封裝插件;本實例中引用的幾個比較常用的第三方插件,簡單介紹其中的幾個,GVUserDefaults是對UserDefaults的封裝,簡單就可以用於存取操作;JDStatusBarNotification是在狀態欄提示效果的插件;ActionSheetPicker底部彈出如時間選擇、選項的插件;QBImagePickerController是照片選擇插件,支持多選並可以設置最多選擇張數;其它幾個插件可以通過名字在網絡上進行搜索,很容易就可以有相應的實例及使用方法;

5Vender.png

五、SDKFile(集成)意在存放一些第三方SDK的文件,當然現在很多比較有名的SDK都有Pods進行管理;這樣也省去了我們自個去維護更新的麻煩;假如沒有Pods的方式,就把SDK放在此處;

六、Podfile主是一些比較穩定的第三方插件及SDK的引用;關於Pod使用的好處就不在這介紹,如果項目中還沒有使用就趕緊了;下面為本項目中引用的一些插件內容:

platform :ios, '7.0'

pod 'AFNetworking', '~>2.6.0'

pod 'SDWebImage', '~>3.7'

pod 'JSONModel', '~> 1.0.1'

pod 'Masonry','~>0.6.1'

pod 'FMDB/common' , '~>2.5'

pod 'FMDB/SQLCipher', '~>2.5'

pod 'CocoaLumberjack', '~> 2.0.0-rc'

pod 'BaiduMapKit' #百度地圖SDK

pod 'UMengAnalytics-NO-IDFA'#友盟統計無IDFA版SDK

pod 'GTSDK'  #個推SDK

pod 'UMengSocial', '~> 4.3'  #友盟社會化分享及第三方登錄

B 集成內容

MobileProject目前已經集成百度地圖的定位、友盟統計、CocoaLumberjack日志記錄、個推的消息推送、友盟分享、友盟第三方登錄內容;今後還會集成一些比較常用的內容;上面幾部分只要替換相應key就可以使用;個推還要使用到你們的證書;相應的實例代碼都在項目中,也是經過驗證測試過了;初始化代碼都在AppDelegate裡面;(QQ,微信,新浪)三種的第三方登錄功能,(QQ空間分享、微信朋友圈、新浪微博分享、QQ微博分享以及微信好友)五種的分享功能,相應的代碼都放在項目Preview中;也增加關於CocoaLumberjack日志記錄的展示及查看頁面。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved