Latest 0.0.9
Homepage https://github.com/fanxiaocong/XCBaseModule
License MIT
Platforms ios 9.0
Authors

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'

Latest podspec

{
    "name": "XCBaseModule",
    "version": "0.0.9",
    "summary": "u57fau7840u7ec4u4ef6uff0cu91ccu9762u5305u542bu5982u4e0bu6a21u5757uff1aAppConfigureuff1aAppu5168u5c40u914du7f6eu7c7buff0cu914du7f6eAppu7684u57fau672cu53c2u6570uff1bCategoryuff1aAppu5e38u7528u7684u4e00u4e9bu5206u7c7buff1bNetworkuff1au7f51u7edcu8bf7u6c42u57fau7c7buff1bToolsuff1au5de5u5177u7c7b",
    "description": "XCBaseModuleuff0cu57fau7840u7ec4u4ef6uff0cu91ccu9762u5305u542bu5982u4e0bu6a21u5757uff1an  AppConfigureuff1aAppu5168u5c40u914du7f6eu7c7buff0cu914du7f6eAppu7684u57fau672cu53c2u6570n  Categoryuff1aAppu5e38u7528u7684u4e00u4e9bu5206u7c7bn  Networkuff1au7f51u7edcu8bf7u6c42u57fau7c7bn  Toolsuff1au5de5u5177u7c7buff08u767bu5f55u8d26u53f7u7f13u5b58u3001u7248u672cu66f4u65b0uff09",
    "homepage": "https://github.com/fanxiaocong/XCBaseModule",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "fanxiaocong": "[email protected]"
    },
    "source": {
        "git": "https://github.com/fanxiaocong/XCBaseModule.git",
        "tag": "0.0.9"
    },
    "platforms": {
        "ios": "9.0"
    },
    "subspecs": [
        {
            "name": "AppConfigure",
            "source_files": "XCBaseModule/Classes/AppConfigure/**/*",
            "dependencies": {
                "XCCategory": [
                    "~> 1.0.6"
                ]
            }
        },
        {
            "name": "Category",
            "source_files": "XCBaseModule/Classes/Category/**/*",
            "dependencies": {
                "XCCategory": [
                    "~> 1.0.6"
                ]
            }
        },
        {
            "name": "Network",
            "dependencies": {
                "XCMacros": [
                    "~> 1.0.2"
                ],
                "XCNetworking": [
                    "~> 0.0.4"
                ]
            },
            "source_files": "XCBaseModule/Classes/Network/**/*"
        },
        {
            "name": "Tools",
            "source_files": "XCBaseModule/Classes/Tools/**/*",
            "dependencies": {
                "XCMacros": [
                    "~> 1.0.2"
                ]
            }
        }
    ]
}

Pin It on Pinterest

Share This