JPBaseLib

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支持为codedataerrorMsg三层结构, 本平台后端默认返回字段亦为此三层结构, 如果不符合此三层结构可创建继承JPNetworkRequest的子类, 重新实现requestCompletePreprocessor方法。

  • 配置参数

    默认的Response结果的三层结构相应字段分别为codedataerrorMsg, 请求成功的状态码为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
      • 坐标纠偏;
  • 更多功能持续集成中…...

源码地址:http://sources.jpsycn.com/dev-plat/ios/base.git

版权归河南金鹏信息技术股份有限公司所有,仅用于技术交流,禁止用于商业目的 all right reserved,powered by Gitbook该文件修订时间: 2020-03-21 17:17:38

results matching ""

    No results matching ""