苹果swift开发之建立自己的框架-1
为什么需要自己的框架?
在长期开发应用过程中,你会发现每做一个应用都会遇到同样的问题。随着写代码手速越来越快,大部分开发变成了复制粘贴调坐标、对接口。如果没有自己的一个框架。代码会变得越来越冗余,可读性越来越差。当用其他不熟悉的第三方的时候,定制非常困难。这时候就需要整理一套可定制,一套属于自己的框架。
我的框架需要哪些东西?
当然一次性建立一个自己的框架需要耗费大量的精力,而且一次性建立的框架往往会存在很多不可预料的问题。所以做框架得分好层次一步一步来。那么具体安装什么步骤来写框架呢?
1.数据模型,当下的90%以上的应用需要网络。如果没有一个数据模型类库,你的大量时间要花费在定义数据模型上
…
@property(nonatomic,retain/assign)NSString *title;
…
往往写错一个字段就会发生程序奔溃。这时候就需要自己写一个可靠的自动化的模型建立工具
我的做法是通过返回的json数据生成一个如下的模型json
**{
“_model”:“FSCurriculumTotalModel”,
“list”:[
{
“_model”:“FSCurriculumListModel”,
“course_list”:[
{
“_model”:“FSCurriculumModel”,
“course_bg_img”:“s”,
“course_info_id”:“s”,
“course_name”:“s”,
“course_detailed_list”:[
{
“_model”:“FSCourseDetailedTypeModel”,
“course_detailed_id”:“s”,
“course_detailed_type”:“i”
}
]
}
],
"course_type_chapter":"s",
"course_type_name":"s"
}
],
"page_count":"i"
}**
修改模型后生成
@interface FSCurriculumTotalModel : RLModel
@property(nonatomic,assign)NSInteger page_count;
@property(nonatomic,retain)NSMutableArray <FSCurriculumListModel *>*list;
@end
@interface FSCurriculumListModel : RLModel
@property(nonatomic,retain)NSString *course_type_name;
@property(nonatomic,retain)NSMutableArray <FSCurriculumModel *>*course_list;
@property(nonatomic,retain)NSString *course_type_chapter;
@end
@interface FSCurriculumModel : RLModel
@property(nonatomic,retain)NSString *course_info_id;
@property(nonatomic,retain)NSString *course_name;
@property(nonatomic,retain)NSMutableArray <FSCourseDetailedTypeModel *>*course_detailed_list;
@property(nonatomic,retain)NSString *course_bg_img;
@end
…
等多个类,这样只要引入文件就可以直接使用
2.网络框架,当提到网络框架的时候,很多人会用第三方直接使用。这是不可取的,正确的做法应该是封装1-2层。这样可以处理通用性问题,也可以简化接口编写代码工作量。
例如
// 首页文章与文章列表页接口
public func url_article_listTT:RLModel(pages:Int,type:String,success:@escaping ApiSuccess,fail:@escaping ApiFail){
let action:String = “/index.php/Api/User/article_list”
var param:[String:String] = [:];
param[“pages”] = self.intToStr(value: pages)
param[“type”] = type
self.request_pri(action: action, param: param, success: success, fail: fail)
}
2.流程跳转以及控制器框架
做过ios开发的程序员都知道,苹果的UINavgationController 定制性不高,定制UIViewController,UITableViewController写逻辑需要大量的代码,而这些代码往往可以简化。另外,系统自带控制器对于屏幕适配、版本兼容有着各种各样的问题,往往需要多个控制器内写大量的冗余代码。
这时候就需要
a.定制navgationBar
b.控制器内写好可复用的代码
c.修改好界面的跳转流程