iOS通用的MVC模式项目框架MobileProject

最近项目比较不赶的情况下,决定把一些通用、常用的内容集成在一个项目框架中,意在新项目中可以快速搭建;其实经过几个项目后,总是有一些重复的创建工作,可以使用本项目的内容直接进行开发;采用的是MVC的分层模式,本文将会重点介绍关于层级的划分及一些已经集成的第三方功能介绍;当然本项目的源代码已经上传到gitHub(地址:https://github.com/wujunyang/MobileProject)上面,当然要是对你有帮助记得给个星,假如大家有时间也可以一起完善,或者有什么问题也可以及时留言;

本项目是在XCode7上面创建,若您的XCode版本是在7以下,可以把代码中几处7的特性进行删除,就可以正常运行本程序;本项目运用Pods进行部分第三方插件管理,对于Pods的知识不是本文的重点,若不了解可以在网络上进行搜索;项目中采用两个Targets来区分产品环境跟测试环境,然后在网络交互时设置不同的连接地址,假如有多个不同地区的版本也是通过不同的Targets进行配置,通过Targets的标识区分出一些差异化,项目的层级划分是按现在比较常用的,若您有更好的意见欢迎提出来,会及时更新到项目中;项目的框架也会不断更新跟集成新的内容进去;

A 整体框架

工程MobileProject为主项目,Pods是自动管理部分第三方插件的工程;在MobileProject工程中对项目进行划分成Main、Expand、Resource、Vender、SDKFile、Supporting Files六个部分;

一 :Main(主要):主要存放关于MVC的内容文件,子级为每个大功能模块的内容;目前MobileProject已经默认创建几个,包含Logger(日志)、Preview(预演)、Home(首页)、Public(公共)、Base(基类)、Login(登录);

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(数据库)六个部分;

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文件进行管理,所以统一存放方便管理;

四:Vender(第三方)存放一些可能被修改的第三方插件及一些自个封装插件;本实例中引用的几个比较常用的第三方插件,简单介绍其中的几个,GVUserDefaults是对UserDefaults的封装,简单就可以用于存取操作;JDStatusBarNotification是在状态栏提示效果的插件;ActionSheetPicker底部弹出如时间选择、选项的插件;QBImagePickerController是照片选择插件,支持多选并可以设置最多选择张数;其它几个插件可以通过名字在网络上进行搜索,很容易就可以有相应的实例及使用方法;

五: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日志记录的展示及查看页面;

时间: 2024-08-04 19:00:49

iOS通用的MVC模式项目框架MobileProject的相关文章

MVC模式-----struts2框架(2)

MVC模式-----struts2框架 第一个struts2程序 struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExecuteFilter.struts2框架通过过滤器对象,获取web应用中的Http请求,并将http请求转发到的指定Action进行处理,Action根据处理结果返回给用户相应的页面. 创建一个简单的struts项目,需要创建于用户进行交互并获取输入信息的jsp页面:呈现最终信息的页面:创建一个用于业

iOS:使用MVC模式帮ViewController瘦身

如何给UIViewController瘦身 随着程序逻辑复杂度的提高,你是否也发现了App中一些ViewController的代码行数急剧增多,达到了2,3千行,甚至更多.这时如果想再添加一点功能或者修改现有逻辑变得让人无比头疼.如果你遇到了这类问题,那是时候停下来了,思考一下如何更好地组织代码,给VC瘦身.本文将会阐述如何结合MVC的思想帮你的VC瘦身同时提高复用和可扩展性. 一.开发中常见的现象和缺点 iOS中最常见的一种设计模式就是MVC,但在实际开发过程中,我们因为这样.那样的原因让单纯

ASP.NET MVC企业级项目框架搭建实战

MVC项目搭建笔记---- 项目框架采用ASP.NET MVC+Entity Framwork+Spring.Net等技术搭建,搭建过程内容比较多,结合了抽象工厂的思想降低了三层之间的耦合,可以使用此套框架进行可扩展性要求高的企业级MVC项目开发.本框架的架构图如下: 第一步(创建分类文件夹): 创建5个文件夹.分别为UI,Model,BLL,DAL,Common,以便于将各模块分类整理. 第二步(项目类库的创建): 在UI文件夹创建ASP.NET MVC4项目模板选择基本. 在Model文件夹

asp.net mvc 简单项目框架的搭建过程(一)对Bll层和Dal层进行充分解耦

学习asp.net 已经有近三个月的时间了,在asp.net mvc上花的时间最多,但个人真是有些菜,不得不说,asp.net mvc的水真的还是蛮深的.目前在公司实习,也见过公司几个项目的代码了.对项目的代码始终停留在一知半解的地步,能改一些简单的bug,但关于项目的来龙去脉始终云里雾里.对于asp.net mvc的架构始终看不懂.因此,照着传智博客的学习视频,学了一下简单的架构搭建.真个架构的搭建我看了将近两遍视频,才稍稍有些头绪,今天在这里记录一下,一方面加深理解,一方面如果以后忘记了,还

IOS常用设计模式——MVC模式(IOS开发)

Cocoa Touch中的MVC模式中,模型和视图不能进行通信,所有通信都是控制器完成. - 模型:是个较为特殊的对象,本质是视图的数据,Text Field输入的内容,Button上的标签都是模型,不一定非要创建一个模型类. - 视图:UIView,这个比较容易理解,向控制器发送请求. - 控制器:更新视图作为对用户请求的回应,更新模型的数据. 模型里面就是数据,视图就是个界面,控制器是中间的更新媒介. 1.触摸myButton时候,会触发方法. 2.视图控制器实现了一些委托和数据源的协议.

ios 深刻理解MVC模式—代理方法

在oc中MVC模式得到广泛应用,所谓MVC,即模型Model,视图View,控制器Controller 控制器通过模型数据控制视图,而代理方法则是控制器控制视图的所使用的方法. 使用代理所需要满足的条件: 1.代理协议:里面声明了代理方法 2.视图View定义满足代理协议的代理属性,例如 @property(nonatomic,weak)id<UITableViewDelegate>delegate; 3.给View提供一个或几个方法,方法内View的代理view.delegate 调用它的代

asp.net -mvc框架复习(10)-基于三层架构与MVC搭建项目框架

1.三种模式比较 一.MVC框架(适合大型项目) 1.V视图 (网页部分) 2.M模型 (业务逻辑+数据访问+实体类) 3.C控制器 (介于M和V之间,起到引导作用) 二.三层架构 1.UI (网页.窗体) 2.BLL (业务逻辑,只有逻辑代码,没有数据访问代码) 3.DAL (数据访问,访问数据源) Models(实体类:用来封装数据,就是数据的载体) 三.三层架构+MVC V C M(BLL +DAL+Models) 三层架构+MVC组合应用模式如图: 2.三层架构+MVC组合开发步骤: (

iOS学习之MVC模式

Modal 模型对象: 模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示商品数据 list.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去,最终会创建或更新模型对象.模型对象更改时(例如通过网络连接接收到新数据),它通知控制器对象,控制器对象更新相应的视图对象. View 视图对象: 视图对象是应用程序中用户可以看见的对象.视图对象知道如何将自己绘制出来,可能对用户的操作作出响应.视图对象的主要目的就是显示来自应用程序模型对象的数据,

ios开发中MVC模式的理解

MVC是80年代出现的一种软件设计模式,是模型(model),视图(view)和控制(Controller)的缩写. 其中Model的主要功能包括业务逻辑的处理以及数据的访问,这是应用程序的主体部分. View的主要功能是用来跟用户进行交互,实现数据的收集和展示,视图是用户看到和直接操作的的界面,它只接受用户的操作. Controller的主要功能用来在视图和模型之间建立联系并控制数据的走向,控制器本身不输出任何内容和对数据做任何处理. 用个简单的例子来说明三者的关系 一个简单的计算器,它除了我