美文网首页iOS Developer
基于AF3.0的请求框架(缓存)附制作Framework

基于AF3.0的请求框架(缓存)附制作Framework

作者: Jaren_lei | 来源:发表于2017-10-24 16:05 被阅读0次

概述:基于AF3.0的一套网络请求框架,以制作SDK(framework)的模式开发。可以直接进入SDK文件夹打开项目文件直接编译生成framework文件。拖进项目中进行开发。如果对制作framework或该开发模式不清楚,可以参考这篇文章

架构逻辑

在基础请求逻辑层之外又做了一层解析和缓存处理,相对来说方便了使用。 先说一说为什么要基于AFNetworking再次开发,不仅因为直接调用其API也不太好,而且也无法做到整个项目的统一配置,最好的方式就是对网络层(AFNetworking)再封装一层,整个项目不允许直接使用 AFNetworking 的 API ,而是直接调用自己封装的网路层,这样网络请求需求都可以在这一层里配置好,使用者无须知道里面的代码逻辑,只管调用封装好的方法就可以实现对应需求,而且也实现缓存策略,当然你也可以选择是否缓存的API调用。

说明

1.因为在架构的时候是基于SDK(framework)的模式来进行开发的 所以该案例下载下来看到的目录结构是这样的

Request/RequestDev目录就是你的项目目录 Request/RequestSDK就是该框架的源文件项目,你可以在RequestDev下的项目文件进行测试编译,在RequestSDK下的项目文件进行源码编译打包framework文件。

2.另外,因为在架构的时候是基于SDK的模式开发的,考虑到使用者的项目中可能都会Pod导入了AF、YYCache等第三方库,由此可能会出现重复导入而导致报错的问题,所以已经将使用到的第三方库进行了修改,如图所示,可放心使用。

架构优势

1.既可以编译framework直接使用,也可以将开源框架源文件拖入项目直接使用

2.降低项目中的耦合

3.统一配置,方便后期维护。

使用方法

1.导入SDK文件

2.创建自定义model并继承于DRHYModel

@interface DRScheduleDateModel : DRHYModel

@property(nonatomic,copy)NSString *date;

@property(nonatomic,copy)NSString *week;

@property(nonatomic,assign)NSInteger is_today;

@property (nonatomic,assign) BOOL selectrow;

@property(nonatomic,strong) NSArray *scheduleDatemodelArr;

@end

实现自定义方法:

@implementation DRScheduleDateModel

- (NSString *)getUrl{

//api_match_date_list 宏定义的API 类似这样http://xxx.com/api/test/date_list

return api_match_date_list;

}

- (void)parse:(id)obj{

[super parse:obj];

if ([obj[@"data"][@"list"] isKindOfClass:[NSArray class]])

{

NSArray *dicT = obj[@"data"][@"list"];

self.scheduleDatemodelArr = [DRScheduleDateModel scheudleDataArray:dicT];

}

}

+ (NSArray*)scheudleDataArray:(NSArray*)array{

NSMutableArray *arrayM = [NSMutableArray array];

for (NSDictionary* dict in array) {

DRScheduleDateModel *model = [[DRScheduleDateModel alloc] init];

model.date = [[dict[@"date"] description] EmptyCheckobjnil];

model.week = [[dict[@"week"] description] EmptyCheckobjnil];

model.is_today = [dict[@"is_today"] integerValue];

model.selectrow = model.is_today==1?YES:NO;

[arrayM addObject:model];

}

return  [arrayM copy];

}

@end

然后在外部创建该model并调用

-(DRScheduleDateModel *)scheduleDaterequest

{

if (!_scheduleDaterequest) {

_scheduleDaterequest=[[DRScheduleDateModel alloc]init];

}

return _scheduleDaterequest;

}

//调用 在这里可以自定义添加model属性,及在这里可以传参数

// self.scheduleDaterequest.date = self.date;

// self.scheduleDaterequest.week = self.week;

// self.scheduleDaterequest.selectrow = NO;

[DRRequest requestPost:self.scheduleDaterequest whenSuccess:^(DRHYModel *m, id res) {

} whenFailure:^(NSError *err) {

}];

最后附上项目链接以供参考:

https://github.com/jilei6/HttpRequestSDK

相关文章

网友评论

    本文标题:基于AF3.0的请求框架(缓存)附制作Framework

    本文链接:https://www.haomeiwen.com/subject/frcxpxtx.html