TWNetworkManager 1.6.0

TWNetworkManager 1.6.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2018年2月

Christian Menschel维护。



##### TWNetworkManager是基于NSURLSession的轻量级Objective-C网络资源下载库,支持缓存。

特性

  • 支持磁盘缓存的文件下载(HTTP eTag和Last-Modified)
  • 带有内存和磁盘缓存的UIImage获取器
  • 不支持缓存的资源请求
  • 支持HTTP方法:POST、GET、DELETE、PUT
  • 可达性

为什么

TWNetworkManager是对NSURLSession的封装,附带一些额外和便利的方法。其目的不是取代AFNetworking。我只是想有一个简单的支持缓存的NSURLSession封装,让每个人都能轻松适应。

安装

TWNetworkManager需要iOS 7或更高版本。

如何使用

示例仍然是Objective-C。当然,Swift也可以工作。请确保导入头文件

#import <TWNetworkManager/TWNetworkManager.h>

defaultManager是标准单例实例。但TWNetworkManager也可以使用[[TWNetworkManager alloc] init]作为非单例使用。

下载

此方法使用磁盘缓存,带有HTTP eTagLast-Modified

NSURL *url = [NSURL URLWithString:@"http://lorempixel.com/700/300/"];
[[TWNetworkManager defaultManager]
          downloadURL:url
          completion:^(NSData *data,
                       NSString *localFilepath,
                       BOOL isFromCache,
                       NSError *error) {

              // Do something with the data

          }];

图片下载

这是一个更方便的方法来获取UIImage。它使用内存和磁盘缓存,带有HTTP eTagLast-Modified

NSURL *url = [NSURL URLWithString:@"http://lorempixel.com/700/300/"];
[[TWNetworkManager defaultManager]
     imageAtURL:url
     completion:^(UIImage *image,
                  NSString *localFilepath,
                  BOOL isFromCache,
                  NSError *error) {

         self.imageView.image = image;
     }];

请求

此方法开始下载,不使用任何磁盘缓存。作为参数,您可以传递HTTP方法
GET: TWNetworkHTTPMethodGET
POST: TWNetworkHTTPMethodPOST
PUT: TWNetworkHTTPMethodPUT
DELETE: TWNetworkHTTPMethodDELETE

NSURL *url = [NSURL URLWithString:@"http://whatthecommit.com"];
[[TWNetworkManager defaultManager]
     requestURL:url
     type:TWNetworkHTTPMethodGET
     completion:^(NSData *data,
                  NSString *localFilepath,
                  BOOL isFromCache,
                  NSError *error) {

         NSString *html = [[NSString alloc]
                              initWithData:data
                              encoding:NSASCIIStringEncoding];

     }];

更多方法调用

此方法重置内存缓存并删除磁盘上的所有缓存数据

- (BOOL)reset;

此方法取消所有正在进行的请求

- (BOOL)cancelAllRequests;

为给定的NSURL返回一个缓存文件的路径

- (NSString *)cachedFilePathForURL:(NSURL *)url;

如果为给定的NSURL在磁盘上有一个缓存文件,则返回YES

- (BOOL)hasCachedFileForURL:(NSURL *)url;

如果给定的NSURL目前正在处理中,则返回YES

- (BOOL)isProcessingURL:(NSURL *)url;

经典的可达性

@property (nonatomic, readonly) BOOL isNetworkReachable;
@property (nonatomic, readonly) BOOL isReachableViaWiFi;

示例项目

TWNetworkManager附带一个示例项目和一些单元测试。只需打开Example/TWNetworkManagerExample.xcworkspace

待办事项

  • 用Swift进行测试(可行)
  • 支持OS X

其他框架

作者

许可证

MIT