Ios6 在iOS 6上使用AFNetworking下载文件

Ios6 在iOS 6上使用AFNetworking下载文件,ios6,afnetworking-2,Ios6,Afnetworking 2,我最近更新了AFNetworking 2.0。文档中说它与iOS6.0+兼容。当我尝试实现下载方法(包括图像和视频)时,我正在构建一个iOS 6.0应用程序。示例使用 AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; 但是,我得到了一个“使用未声明的标识符'AFURLSessionManager'”错误。我发现AFURLSessionM

我最近更新了AFNetworking 2.0。文档中说它与iOS6.0+兼容。当我尝试实现下载方法(包括图像和视频)时,我正在构建一个iOS 6.0应用程序。示例使用

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
但是,我得到了一个“使用未声明的标识符'AFURLSessionManager'”错误。我发现AFURLSessionManager使用的类只能从iOS7获得。我只是想知道,我可以使用AFNetworking在iOS6中下载谁

另外,是否还有其他方法可以查看下载进度


谢谢你

正如你所说,
AFURLSessionManager
仅在iOS 7中可用(由
NSURLSession
支持),因此你应该在AFNetworking 2.0中使用基于
NSURLConnection
的类(
AFHTTPRequestOperationManager
AFHTTPRequestOperation
等).

您可以使用
AFHTTPRequestOperation
类在iOS 6上执行文件下载。基本上,您只需要设置操作的
outputStream
属性来存储文件,并设置
downloadProgressBlock
属性来监视进度

下面的基本方法是在类中声明的,该类是
AFHTTPRequestOperationManager
的子类。初始化此类的实例时,我设置了
baseURL
属性

-(AFHTTPRequestOperation*)下载文件,其中contentId:(NSString*)contentId目标:(NSString*)目标路径{
NSString*relativeURLString=[NSString stringWithFormat:@“api/library/zipped/%@.zip”,contentId];
NSString*absoluteURLString=[[NSURL URLWithString:relativeURLString relativeToURL:self.baseURL]absoluteString];
NSMutableURLRequest*request=[self.requestSerializer requestWithMethod:@“GET”URLString:absoluteURLString参数:nil];
void(^successBlock)(AFHTTPRequestOperation*操作,id响应对象)=^void(AFHTTPRequestOperation*操作,id响应对象){
};
void(^failureBlock)(AFHTTPRequestOperation*操作,NSError*错误)=^void(AFHTTPRequestOperation*操作,NSError*错误){
};
AFHTTPRequestOperation*operation=[自身HTTPRequestOperationWithRequest:请求成功:成功块失败:失败块];
NSOutputStream*outputStream=[NSOutputStream outputStreamToFileAtPath:destinationPath append:NO];
operation.outputStream=outputStream;
[operation setDownloadProgressBlock:^(NSUInteger字节读取、long long totalBytesRead、long long totalBytesExpectedToRead){
}];
[self.operationQueue addOperation:operation];
返回操作;
}
试试这个

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

AFHTTPRequestOperation *operation = [manager GET:urlString
                                      parameters:nil
                                         success:^(AFHTTPRequestOperation *operation, NSData *responseData)
                                     {
                                         [responseData writeToURL:someLocalURL atomically:YES];
                                     }
                                         failure:^(AFHTTPRequestOperation *operation, NSError *error)
                                     {
                                         NSLog(@"Downloading error: %@", error);
                                     }];

[operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead)
 {
     float downloadPercentage = (float)totalBytesRead/(float)(totalBytesExpectedToRead);

     [someProgressView setProgress:downloadPercentage animated:YES];
 }];

好的,找到这个。。。总而言之:为了支持新的NSURLSession API以及旧的但未弃用且仍然有用的NSURLConnection,AFNetworking 2.0的核心组件分为请求操作和会话任务。AFHTTPRequestOperationManager和AFHTTPSessionManager提供了类似的功能,具有几乎可互换的接口,如果需要(例如在iOS 6和iOS 7之间进行移植),可以很容易地进行交换。您是否有使用AFHTTPRequestOperationManager下载文件的示例或教程?我没有,但应该很简单,您只需要创建一个AFHTTPRequestOperation(您可以使用管理器的方法HTTPRequestOperationWithRequest:success:failure:)并将其输出流设置为指向文件的输出流。