Skip to content

优秀的缓存请求库,快速请求接口和图片

License

Notifications You must be signed in to change notification settings

wwwang89/WTRequestCenter

 
 

Repository files navigation

WTRequestCenter

方便缓存的请求库,提供了方便的HTTP请求方法,传入请求url和参数,返回成功和失败的回调。 UIKit扩展提供了许多不错的方法,快速缓存图片,图片查看,缩放功能, 颜色创建,设备UUID,网页缓存,数据缓存等功能。 无需任何import和配置,目前实现了基础需求, 如果有其他需要请在issue 上提出,谢谢! 完全64位支持。

使用方法 Usage

GET 请求,根据URL和参数去请求

用例:

        NSString  *url = @"http://www.baidu.com";

        NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
        [parameters setValue:@"value" forKey:@"key"];
        [parameters setValue:@"v2" forKey:@"key2"];

        [WTRequestCenter getWithURL:url
                         parameters:parameters
                           finished:^(NSURLResponse *response, NSData *data)
        {
            NSString *string = [[NSString alloc] initWithData:data
                                                     encoding:NSUTF8StringEncoding];
            NSLog(@"%@",string);
        }
                             failed:^(NSURLResponse *response, NSError *error)
        {
            NSLog(@"%@",response);
        }];

POST 请求

用例:

        NSString  *url = @"http://www.baidu.com";
        NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
        [parameters setValue:@"aaa" forKey:@"uid"];
        [parameters setValue:@"1" forKey:@"type"];

        [WTRequestCenter postWithURL:url
                          parameters:parameters
                            finished:^(NSURLResponse *response, NSData *data)
        {
            NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"%@",string);
        }
                              failed:^(NSURLResponse *response, NSError *error)
        {
            NSLog(@"%@",response);
        }];

GET+缓存

[WTRequestCenter GETUsingCache:@"url"
                    parameters:nil
                      finished:^(NSURLResponse *response, NSData *data) {
                              
                      } failed:^(NSURLResponse *response, NSError *error) {
                              
                          }];

已经完成的请求缓存下来,用作下次使用。没有请求过的重新请求,请求完后缓存。

Debug模式 默认开启,会输出请求的对象,响应时间或者错误信息, 可以再WTRequestCenter.h里面关闭。

###安装 点击右侧download或者终端git clone https://github.com/swtlovewtt/WTRequestCenter 下载后找到里面的WTRequestCenter,把文件夹里面的文件粘到工程里面就可以使用了。 UIKit扩展是一个非常好的UI扩展工具,提供了图片下载方法,颜色快速创建等cagegory。

目前不提供cocoaPod安装

WTDataSaver

WTDataSaver 是个文件存取类,用于自定的方式把数据存取到本地

保存数据 name只需要传文件名就可以了,无需传路径

+(void)saveData:(NSData*)data
       withName:(NSString*)name
     completion:(void(^)())completion;

读取数据 name只需要传文件名就可以了,无需传路径

+(void)dataWithName:(NSString*)name
         completion:(void(^)(NSData*data))completion;

需要版本

iOS 5.0

UIKit+WTRequestCenter

这里面提供了许多UIKit的扩展方法

  • UIImageView的图片缓存
  • UIImage的播放gif+图片缓存
  • UIButton的图片缓存
  • UIColor的快速创建
  • UIDecive的扩展(uuid调用)
  • UIWebView的缓存扩展(暂时不支持网页游戏的缓存)
  • UIScreen 提供了一些适配屏幕的好方法,具体看注释
  • UIApplication 提供了版本号和build号的获取
  • WTNetworkActivityIndicatorManager提供了网络指示器

Communication

测试中方法

这是仿照AFNetworking写的一个请求方法,待测试。 这是一个比较强大的方法。有缓存策略和下载进度, 希望大家测试一下,给我一个反馈。

+(WTURLRequestOperation*)testGetWithURL:(NSString*)url
                             parameters:(NSDictionary *)parameters
                                 option:(WTRequestCenterCachePolicy)option
                               progress:(WTDownLoadProgressBlock)progress
                               finished:(WTRequestFinishedBlock)finished
                                 failed:(WTRequestFailedBlock)failed;

##编程规范

  • 使用xib来调整自动布局. 不要使用 storyboard(简称sb),因为大程序里面sb文件会很大,编译特别慢,影响开发效率。
  • 头文件能不import就不要import文件,节省编译时间.
  • 命名要规范,成员变量前面加上下划线(NSString *_var)这么做的目的是区分成员变量和局部变量
  • 提交代码之前尽量去掉或者注释掉输出,多注意,方便debug.
  • 协议用"#pragma mark - protocol"来标记代码,这样方便快速跳到protocol里面查看方法
  • 头文件要有一定量的注释.
  • 不使用prefix header 文件,节省编译时间.
  • 图片使用Images.xcassets.
  • 使用@import framework 就不需要手动导入改库了。
  • View千万不要处理业务逻辑,只适合做UI
  • 能用OperationQueue的地方不要用GCD.
  • 常量不要用宏定义指定,用静态常量声明,这样做数据的数值就不会产生变化,宏定义里面有undefine
  • 用分析去查看内存用错的地方.
  • 用Profile测试程序的性能.

##MVC ###View的做法 View的功能就是展示UI,不储存任何数据,不参与任何业务逻辑 View的数据来源是Datasource,交互事件是Delegate

###Controller 程序的中心,对Model和V有绝对的控制权,业务的核心。

###Model Model要求不高,用原生数据类型或者jsonModel生成的都可以。 通常情况下Controller去修改model,修改完后该刷新UI刷新UI。

###总结

  • Controller对Model和View的绝对控制权。
  • Model通过Notification来通知Controller数据发生了变化。
  • View通过Datasource或者Delegate来告知Controller自己发生了变化/是否需要发生变化。
  • Model和View不直接通信,没有任何关系。
  • Controller之间可以互相帮忙,大量的Controller结合起来就形成了一个完整的程序

About

优秀的缓存请求库,快速请求接口和图片

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 97.0%
  • Ruby 3.0%