XCBaseModule 0.0.11

XCBaseModule 0.0.11

Maintained by fanxiaocong.



  • By
  • fanxiaocong

XCBaseModule

CI Status Version License MIT Platform Support 


Author 小小聪明屋
E-mail [email protected]
GitHub https://github.com/fanxiaocong
Blog http://www.cnblogs.com/fanxiaocong

Example

XCAppConfigure App的全局配置

这个类是一个单例,主要只是用来记录App的一些全局属性,可以在 AppDelelgate 中统一配置这些属性,然后在需要用到这些属性的时候直接获取就可以了,当然如果您不喜欢这种处理方式可以不导入此类。

/// 设置 app 的全局配置
[XCAppConfigure configureApplication:^(XCAppConfigure *configure) {
        
	// 这里的所有属性,都只是做一个保存,在一个地方统一配置,需要用到的地方直接获取
   /// - 字体
   configure.titleFont = [UIFont systemFontOfSize:20];
   configure.subTitleFont = [UIFont systemFontOfSize:20];
   configure.littleSubTitleFont = [UIFont systemFontOfSize:20];
   configure.navigationTitleFont = [UIFont systemFontOfSize:20];
}];

Category App组件化中常用分类

如果您的项目需要组件化,那么这些分类可能会帮助到您,主要是一些视图与资源的加载的方法,如果您的项目不需要组件化或者您不需要用到这些方法,可以不导入该模块。

  • <NSBundle+XCLoad.h> Bundle资源的加载
  • <NSObject+XCLog.h> 打印日志时,将数组和字典中的 UTF-8 码转化为中文
  • <UIImage+XCLoad.h> 加载Bundle中的图片资源
  • <UIView+XCLoad.h> 加载Bundle中的视图
  • <UIViewController+XCLoad.h> 加载Bundle中的控制器

Network 网络请求封装

基于 XCNetworking 二次封装的网络请求工具类(其底层基于AFNetworking),可以统一配置网络请求的一些常用参数。

  • <XCUserNetwork.h> 负责网络请求

    • 继承关系
      • XCUserNetwork > XCNetworking > AFNetworking
    • 支持 GET、POST、图片上传、文件下载四种常用的请求
  • <XCUserNetworkResult.h> 网络请求结果的一个包装类

    • result 网络请求返回的原始数据
    • message 提示语,您可以根据返回的数据设置这个值
    • status 网络请求的状态,您需要根据返回的数据来更新这个状态
  • <XCUserService.h> 接口服务类

    • 网络请求的全局配置类,您可以在 AppDelegate 中使用该类来进行网络请求的全局配置,比如 BaseURL(接口请求总地址)、请求头的设置、请求结果的统一配置等等。
[XCUserService configureBaseURL:SERVICE_URL prepareRequestBlock:^(XCUserNetwork *userNetwork) {
    /// 配置请求前的操作
        
    // 设置请求头
    // [userNetwork.manager.requestSerializer setValue:@"JSESSIONID=7116FCB88BDB5B50A7268BF679A5E924" forHTTPHeaderField:@"Cookie"];
    // userNetwork.manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    // userNetwork.manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/plain", nil];
        
} requestResultBlock:^(NSURLSessionDataTask *task, XCUserNetworkResult *resultM) {
        
    /// 配置请求完成的回调,如果后台接口返回的数据比较 “规范”,则可以在此处进行统一配置
    
    /// ***测试***
    if ([resultM.result isKindOfClass:[NSError class]]) {
        /// 后台接口报错
        // 解析错误...略
        resultM.message = @"获取数据失败";
        resultM.status = XCUserNetworkResultStatusFailure;
        return;
    }
    
    /// 这里假设根据 code 的值来进行处理:code=0 表示成功; code=1 示登录失效; 其他表示失败
    switch ([resultM.result[@"code"] integerValue]) {
        case 0: // 成功
        {
            NSLog(@"请求成功");
            resultM.status = XCUserNetworkResultStatusSuccess;
            break;
        }
        case 1: // 登录失效
        {
            NSLog(@"登录失效了,请示重新登录");
            resultM.status = XCUserNetworkResultStatusPass;
            resultM.message = @"您的账号在其他设备上登录,请重新登录";
            break;
        }
        default: // 失败
        {
            NSLog(@"请求失败");
            resultM.status = XCUserNetworkResultStatusFailure;
            resultM.message = resultM.result[@"message"];
            break;
        }
    }
}];
  • 您可以根据不同的模块为该类设置相应的分类,在分类中实现接口的请求参数和名称的配置。
#import "XCUserService+XCTestService.h"

@implementation XCUserService (XCTestService)

- (void)testNetworkServiceWithUserId:(NSString *)userId
                       token:(NSString *)token
                     success:(XCNetworkSuccessBlock)success
                     failure:(XCNetworkFailureBlock)failure
{
    NSDictionary *params = @{
                     @"userId" : userId,
                     @"token"  : token
                     };

    [self.network postWithAction:@"api/getuserinfo" params:params success:^(NSURLSessionDataTask *task, id result) {

    } failure:^(NSURLSessionDataTask *task, NSString *reason) {

    }];
}

@end

Tools 常用工具

  • <XCUserInformationTool.h> 用户账号管理类
  • <XCVersionUpdateTool.h> 检测版本工具类

Installation

CocoaPods

  • 导入所有模块
pod 'XCBaseModule'
  • 只导入 AppConfigure 模块
pod 'XCBaseModule/AppConfigure'
  • 只导入 Category 模块
pod 'XCBaseModule/Category'
  • 只导入 Network 模块
pod 'XCBaseModule/Network'
  • 只导入 Tools 模块
pod 'XCBaseModule/Tools'