1. 简介
该框架是对iOS开发中常用的基础类库的封装和总结,主要以类扩展的方式实现常用类扩充,方法调用更简便。框架还包含了网络请求类—JPNetworkRequest
类,该类是对YTKNetwork的进一步封装,实现了请求结果自动转Model
的功能。
2. 如何使用
2.1. 安装
Podfile添加如下:
pod 'JPBaseLib'
执行安装命令
cd [path/to/project] pod install
导入头文件
#import<JPBaseLib/JPBaseLib.h>
2.2. 使用
2.2.1. 网络请求类 JPNetworkRequest
框架默认对网络请求Response
支持为code
、data
、errorMsg
三层结构, 本平台后端默认返回字段亦为此三层结构, 如果不符合此三层结构可创建继承JPNetworkRequest
的子类, 重新实现requestCompletePreprocessor
方法。
配置参数
默认的
Response
结果的三层结构相应字段分别为code
、data
、errorMsg
, 请求成功的状态码为0
, 如果和实际后台返回字段不统一, 可通过JPNetworkRequestConfig
的单例对象
进行配置。[JPNetworkRequestConfig defaultConfig].JPNetworkResponseDataKey = @"data字段名"; [JPNetworkRequestConfig defaultConfig].JPNetworkResponseErrorMsgKey = @"errorMsg字段名""; [JPNetworkRequestConfig defaultConfig].JPNetworkResponseErrorCodeKey = @"code字段名"";
定义全局
BaseURL
可程序入口处定义网络请求的
baseUrl
, 建议先创建一个继承自JPNetworkRequest
类的子类, 在子类中配置baseUrl参数以及上一步中的参数配置。@implementation JPNetwork + (void)initialize { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ [[YTKNetworkConfig sharedConfig] setBaseUrl:BASE_API_URL]; ///也可再此配置Response相关参数 // [JPNetworkRequestConfig defaultConfig].JPNetworkResponseDataKey = @""; // [JPNetworkRequestConfig defaultConfig].JPNetworkResponseErrorMsgKey = @""; // [JPNetworkRequestConfig defaultConfig].JPNetworkResponseErrorCodeKey = @""; }); } @end
创建Api请求类
如果在上一步中创建了继承自
JPNetworkRequest
类的子类, 那么你的网络交互类就继承自上一步创建的类,否则请继承自JPNetworkRequest
(不建议)。@interface NewsApi (){ NSInteger _pageIndex; NSInteger _pageSize; } @end @implementation NewsApi + (instancetype)apiWithPageIndex:(NSInteger)pageIndex pageSize:(NSInteger)pageSize { return [[self alloc] initWithPageIndex:pageIndex pageSize:pageSize]; } - (instancetype)initWithPageIndex:(NSInteger)pageIndex pageSize:(NSInteger)pageSize { if (self = [super init]) { _pageSize = pageSize; _pageIndex = pageIndex; } return self; } - (NSString *)requestUrl { return @"/api/app/content/news"; } - (YTKRequestMethod)requestMethod { return YTKRequestMethodGET; } - (id)requestArgument { return @{@"pageIndex": @(_pageIndex), @"pageSize": @(_pageSize) }; } @end
发起网络请求
//传入数据模型类, 可将网络请求结果自动转换成对应的模型类的实例对象 [[NewsApi apiWithPageIndex:0 pageSize:10 modelClass:[User class]] startWithCompletionBlockWithSuccess:^(__kindof JPNetworkRequest *request) { NSLog(@"%@", request.parsedResult); } failure:^(__kindof JPNetworkRequest *request) { NSLog(@"%@", request.error); }]
注:更多使用方法和实现细节可参见YTKNetwork/YYModel。
2.2.2. 常用类扩展
主要包含:
- 常用宏定义
- 设备类型定义
- 导航、StatusBar、TabBar等控件高度定义
- …...
- 类扩展
- UIView
- 二维码生成、frame、截屏等相关方法;
- NSString
- 常用正则格式判断、UUID生成、md5等相关方法;
- UIImage
- 图片方向、旋转、图片缩放等相关方法;
- CLLocation
- 坐标纠偏;
- UIView
- 更多功能持续集成中…...