##### TWNetworkManager是基于NSURLSession的轻量级Objective-C网络资源下载库,支持缓存。
TWNetworkManager是对NSURLSession的封装,附带一些额外和便利的方法。其目的不是取代AFNetworking。我只是想有一个简单的支持缓存的NSURLSession封装,让每个人都能轻松适应。
TWNetworkManager需要iOS 7或更高版本。
示例仍然是Objective-C。当然,Swift也可以工作。请确保导入头文件
#import <TWNetworkManager/TWNetworkManager.h>
defaultManager
是标准单例实例。但TWNetworkManager也可以使用[[TWNetworkManager alloc] init]
作为非单例使用。
此方法使用磁盘缓存,带有HTTP eTag
和Last-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 eTag
和Last-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