Ios6 在iOS 6上使用AFNetworking下载文件
我最近更新了AFNetworking 2.0。文档中说它与iOS6.0+兼容。当我尝试实现下载方法(包括图像和视频)时,我正在构建一个iOS 6.0应用程序。示例使用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
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:)并将其输出流设置为指向文件的输出流。